日期:2014-05-20  浏览次数:20739 次

如何让HashSet中的元素能顺序遍历
以下程序的运行结果始终如下,请在下划线处添加相应代码。
运行结果:
DDDDDDDD
CCCCCCCC
BBBBBBBB
AAAAAAAA
程序代码:
Java code

import java.util.*;
class  A{
    String sa ;
    A(String str){
        sa = str;
    }
    public String toString(){
        return sa;
    }
}
public class B {
    public static void main(String args[]) {    
        Set<A> set = new HashSet<A>();
        set.add(new A("AAAAAAAA"));
        set.add(new A("BBBBBBBB"));
        set.add(new A("CCCCCCCC"));
        set.add(new A("DDDDDDDD"));        
                                ______;
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }
}




------解决方案--------------------
HashSet是用HashCode()排序的,LZ可以重写A的HashCode方法试试
------解决方案--------------------
必须得有这句啊:
Iterator it=set.iterator();
------解决方案--------------------
Java code

   Iterator it = set.iterator();

------解决方案--------------------
这是三行代码的:
Java code
Set tSet = new TreeSet(new Comparator<A>() {

            @Override
            public int compare(A o1, A o2) {
                return o2.sa.compareTo(o1.sa);
            }

        });
        tSet.addAll(set);
        Iterator it = tSet.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }

------解决方案--------------------
HashSet 是无序的(跟 hashCode 有关)

如果想按 add 时的顺序遍历的话,可以使用 LinkedHashSet
------解决方案--------------------
探讨

HashSet 是无序的(跟 hashCode 有关)

如果想按 add 时的顺序遍历的话,可以使用 LinkedHashSet

------解决方案--------------------
你这个是填空题的嘛 需要Iterator it=set.iterator();

HashSet 是无序的,所以你那个输出结果只是碰巧而已,再输出估计就不会是那样了
------解决方案--------------------
光加这一句肯定不行,结果是不确定的.

看来这一行得多写几条语句.
------解决方案--------------------
探讨

HashSet 是无序的(跟 hashCode 有关)

如果想按 add 时的顺序遍历的话,可以使用 LinkedHashSet

------解决方案--------------------
探讨
Java code


Iterator it = set.iterator();

------解决方案--------------------
好像用hashmap结果能达到,不过你想达到那个效果,最好是键值对的形式
------解决方案--------------------
探讨
必须得有这句啊:
Iterator it=set.iterator();