public class iterator {
public static void main(String[] args) {
Collection c=new HashSet();
c.add(new Name("f1","l1"));//Name是一个类,有两个私有属性firstName、lastName;
c.add(new Name("f2","l2"));
c.add(new Name("f3","l3"));
Iterator i=c.iterator();
while(i.hasNext()) {
Name n=(Name)i.next();
System.out.print(n.getFirstName()+"  ");
}
}为什么输出顺序是f3 f2 f1???

解决方案 »

  1.   

    iterator并不保证顺序,只是遍历而已。而且MAP是无序的
      

  2.   

    public class HashSet<E>extends AbstractSet<E>implements Set<E>, Cloneable, Serializable此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变
      

  3.   

    HashSet() 是实现Set接口 Set是里面的元素是无序的  不重复的!!所以输出的顺序当然是任意的!
      

  4.   

    我这儿输出的是f2 f1 f3。所以那个是无序的,不要太关注这个了!
      

  5.   

    hashset无序,改成LinkedHashSet就好了
      

  6.   

    hashset无序,改成LinkedHashSet就好了
      

  7.   

    因为是 hashSet , 所以无序可以换成TreeSet 试试
      

  8.   

    HashSet() 是实现Set接口 Set是里面的元素是无序的 不重复的!!所以输出的顺序当然是任意的!
      

  9.   

    其实只要记住,Tree是用顺序的,Set是无序的
      

  10.   

    Hashset是无序的,可以用TreeSet
      

  11.   

    set相当于数学中的集合,文氏图懂吧,没顺序的
      

  12.   

    正解,要保证顺序的话可以使用LinkedHashSet,一个链表型的set;
      

  13.   

    hashset 是无序 不重复的