Avatar billede madox Nybegynder
08. maj 2003 - 13:19 Der er 8 kommentarer og
1 løsning

Hjælp til hashtable....

Hvorfor bliver der ikke tilføjet værdier 11 gange til hashtabellen ved flg kode:
for(i=0;i<11;i++){
tabel.put("g","j");
}
System.out.println(tabel );

jeg havde forventet(og har brug for) at den tilføjer "g"="j" 11 gange, men den gær det kun 1 gang. Hvorfor og hvordan retter jeg det?
Avatar billede arne_v Ekspert
08. maj 2003 - 13:23 #1
Hashtable put overskriver !
Avatar billede arne_v Ekspert
08. maj 2003 - 13:24 #2
Du kan ikke have mere end en entry med samme key.
Avatar billede arne_v Ekspert
08. maj 2003 - 13:25 #3
Du kan gemme med en combined key ligesom:

for(i=0;i<11;i++){
tabel.put("g" + i,"j");
}
Avatar billede disky Nybegynder
08. maj 2003 - 13:26 #4
Hvis du kigger i API'en kan du se at du kun kan havde et entry med samme key i en HashTable
Avatar billede arne_v Ekspert
08. maj 2003 - 13:26 #5
Du kan teste om noget allerede er der:

if(tabel.get("g")==null) {
  tabel.put("g", "j");
}
Avatar billede arne_v Ekspert
08. maj 2003 - 13:28 #6
Eller du kan tælle antal forekomster op:

if(tabel.get("g")==null) {
  tabel.put("g", new Integer(1));
} else {
  int n = ((Integer)tabel.get("g")).intValue();
  tabel.put("g", new Integer(n + 1));
}
Avatar billede tosssen Nybegynder
08. maj 2003 - 13:33 #7
Hvis du har brug for at "g" og "j" er der elleve gange, så er Hashtable ikke den bedste måde at løse problemet på. Hvad er problemstillingen helt præcist?
Avatar billede tosssen Nybegynder
08. maj 2003 - 13:39 #8
Problemet ved arne_v's forslag er at man ikke længere kan se at det er "j" der svarer til "g"
Avatar billede madox Nybegynder
09. maj 2003 - 19:26 #9
Jeg fik løst problemet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester