Id na podstawie stringa

Id na podstawie stringa
HE
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:Kraków
  • Postów:233
0

Potrzebuje na podstawie Stringa utworzyć Id. Jakieś pomysły? Md5 odpada bo tym id musi być Integer, i powinno być ustalane casesensitive.

J0
Jak masz nieskończenie wiele możliwości utworzenia stringa, a int jest ograniczony do 32/64bitów zależnie od platformy to dojdzie do nieskończonej ilości kolizji twojego id, a przecież id to chyba identyfikator, a to chyba musi być określone jednoznacznie do czego się odnosi.
PI
  • Rejestracja:ponad 9 lat
  • Ostatnio:4 miesiące
  • Postów:2787
0

A czy jest to w ogóle potrzebne? W bazie danych primary key nie musi być intem

HE
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:Kraków
  • Postów:233
0

Ale to nie będzie zapisywane do bazy... a musi być intem bo mi jest taki potrzebny do dalszych działań.

edytowany 1x, ostatnio: Hepek
PI
  • Rejestracja:ponad 9 lat
  • Ostatnio:4 miesiące
  • Postów:2787
0

Zawsze możesz użyć hashCode ;) jeśli będziesz mieć te same stringi, to string pool zapewni, że będą to referencje do tego samego obiektu więc hashCode też będzie taki sam

KA
to string pool zapewni tak a jak gdzieś tam w kodzie sobie zachce mi się użyć new? brzmi trochę jak wtf
NZ
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 8 lat
  • Postów:93
3

Spoko, nie martw się, Twój przypadek jest typowy. Wygląda on mniej więcej tak:

  1. Przychodzi ktoś na forum z jakimś kompletnie absurdalnym pomysłem rozwiązania jakiegoś problemu X.
  2. Niektórzy rzucają równie poronione pomysły.
  3. Z czasem ktoś sprytny zauważa, że nikt nie opisał do tej pory problemu X.
  4. Po kilkunastu-kilkudziesięciu postach udaje się przekonać autora, że trzeba zacząć od opisania źródłowego problemu X.
  5. Po paru dniach autor to w końcu robi.
  6. Ktoś rzuca rozsądny pomysł.
  7. Wątek zostaje zakończony.
PI
mój pomysł jest poroniony? ;p
Patryk27
Robienie primary keya na cokolwiek, co nie jest intem, jest poronione :P
PI
nieprawda, nie jest. @Shalom co o tym sądzisz?
Shalom
Nie wiem, bo nie wiem jakie jest zastosowanie tego. @Hepek musi najpierw napisać co chce osiągnąć.
HE
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:Kraków
  • Postów:233
0

@Shalom napisałem co chcę osiągnąć i wychodzi na to, że pomysł z hashcode jest chyba dobry. Chodzi to to aby na podstawie ciągu znaków np. "4programmers" utworzyć unikalne ID które da się zapisać w Integer. Tylko żeby to ID nie było losowe tylko związane z wpisanym ciągiem. Jak nie da się tego osiągnąć zostaje mi ręczne ustawianie ID i sprawdzanie przy dodawaniu do zbioru czy takie czasem nie istnieje.

Problem wygląda mniej więcej tak:
Można dodawać listy i elementy do list, nazwa listy musi być unikalna i nazwa elementu w obrębie listy też. Chodziło mi o to, żeby na podstawie stringa nazwaListy+nazwaElementu tworzyć unikalne id.

edytowany 2x, ostatnio: Hepek
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Dlaczego po prostu nie zrobisz sobie:

Kopiuj
CREATE TABLE cośtam (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  listName VARCHAR(64) NOT NULL,
  elementName VARCHAR(64) NOT NULL,
  UNIQUE (listName, elementName) 
)

edytowany 2x, ostatnio: Patryk27
Zobacz pozostałe 4 komentarze
KA
autor robi jakiś WTF a wy się w tych oparach WTFa produkujecie. niepotrzebnie!!
HE
a wytłumaczysz mi dlaczego WTF? :) obecnie załatwiłem to tak, że ze stringa w kombinacji nazwaListy+nazwaElementu wyciągam hashcode i to stanowi unikalne id. Posta pisałem wczoraj wieczorem kiedy już byłem nieco zmęczony może faktycznie był nie potrzebny tylko od razu użyć hashcode...
Patryk27
@Hepek: no bo tak się po prostu nie robi, nie jest to jednoznaczne i sprawiasz wrażenie nie powiem po co mi to, ale oceńcie mój pomysł na rozwiązanie tego.
HE
Nie wiem dlaczego wysnuwasz wniosku, że coś chcę ukryć czy jak. Poza tym dla danego obiektu klasy String np "TEST" hashcode zawsze zwróci taką samą wartość więc dlaczego uważasz, że to nie jednoznaczne?
Patryk27
Wysuwam taki wniosek, bo w dalszym ciągu nie powiedziałeś po co Ci w sumie to jako liczba całkowita.
SW
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 4 lata
  • Postów:426
1
Hepek napisał(a):

@Shalom napisałem co chcę osiągnąć i wychodzi na to, że pomysł z hashcode jest chyba dobry. Chodzi to to aby na podstawie ciągu znaków np. "4programmers" utworzyć unikalne ID które da się zapisać w Integer. Tylko żeby to ID nie było losowe tylko związane z wpisanym ciągiem. Jak nie da się tego osiągnąć zostaje mi ręczne ustawianie ID i sprawdzanie przy dodawaniu do zbioru czy takie czasem nie istnieje.

Pamietaj, ze ten sam hash code moze byc dla dwoch roznych stringow.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.