該類按名稱排序,但當各種對象具有相同的名稱時會發生什麼?訂單如何在收藏中工作?
public class MyStuff implements Comparable<MyStuff> {
MyStuff(String n, int v){ name = n; value=v;}
String name; int value;
public int compareTo(MyStuff m){
return name.compareTo(m.name);
}
public String toString() { return name + " " + value + " ";}
public static void main(String[] args){
List<MyStuff> l = new ArrayList<MyStuff>();
MyStuff m0 = new MyStuff("hola",1);
MyStuff m1 = new MyStuff("hola",1);
MyStuff m2 = new MyStuff("hola",2);
MyStuff m3 = new MyStuff("hola",2);
l.add(m0);
l.add(m1);
l.add(m2);
l.add(m3);
Collections.sort(l);
System.out.println(l);
for(Object o: l) System.out.println(o.hashCode());
}
}
結果:
[hola 1 , hola 1 , hola 2 , hola 2 ]
21722195
12719253
30758157
12773951
哪個對象是第一?取決於值,哈希碼..?
甲'hash'被設計成產生用於數據的隨機數。在散列集合中,這有助於僞隨機排列數據,以便只有給定的關鍵字可能在同一個存儲桶中。簡而言之,哈希被設計爲與排序相反。 ;) –