【发布时间】:2014-08-28 21:31:36
【问题描述】:
这是我在一个练习中的代码,
public class RockTest {
public static void main(String[] args){
HashSet<Rock> hashset = new HashSet();
Rock rock1 = new Rock("QingDanasty",89);
Rock rock2 = new Rock("Modern",32);
Rock rock3 = new Rock("MingDanasty",100);
hashset.add(rock1);
hashset.add(rock2);
hashset.add(rock3);
Iterator<Rock> iterator = hashset.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next().getName());
}
}
}
打印代码时,控制台显示的是 rock2 rock1 rock3 而不是 rock1 rock2 和 rock3 的顺序,但是不知道为什么?
【问题讨论】:
-
HashSet 顺序(如果你想这样称呼它的话..)是基于 hashCode 的。因此,根据放入它的对象的 HashCode 来决定排序。
-
3 投票赞成重复问题,4 投票赞成回答已经回答的重复问题。有趣:)