Ich versuche eine Hashtabelle in Java zu machen, wo die Schlüssel int [] sind, aber es funktioniert nicht. Ich habe ein kleines Testprogramm gemacht, mein Problem zu zeigen:Hashtable mit int-Array als Schlüssel in Java
public class test{
public static void main(String[] args){
int[] test0 = {1,1};
int[] test1 = {1,1};
Hashtable<int[], String> ht = new Hashtable<int[], String>();
String s0 = "foo";
ht.put(test0, s0);
System.out.println("the result from ht.get(test1)");
System.out.println(ht.get(test1));
System.out.println("the result from ht.get(test0)");
System.out.println(ht.get(test0));
}
}
Meine Absicht ist es, dass beide ht.get Calles sollten das gleiche Ergebnis zurück, da die beiden Arrays gleich sind, aber sie nicht. Hier ist das Ergebnis von Ausführung des Codes:
the result from ht.get(test1)
null
the result from ht.get(test0)
foo
Fehle ich etwas hier, oder ist es einfach unmöglich verwenden int [] als Schlüssel in einem hastable?
+1 perfekte Antwort –
Listen sind (normalerweise) auch veränderbar. Der wichtige Unterschied ist, dass ['List.equals'] (http://download.oracle.com/javase/6/docs/api/java/util/List.html#equals%28java.lang.Object%29) und ['List.hashCode'] (http://download.oracle.com/javase/6/docs/api/java/util/List.html#hashCode%28%29) wird benötigt, um elementweise Gleichheit zu verwenden. –
@Matthew, guter Punkt.Die Erwähnung der Veränderlichkeit wurde gestrichen. –