当前位置: 代码迷 >> J2SE >> 怎么让HashSet中的元素能顺序遍历
  详细解决方案

怎么让HashSet中的元素能顺序遍历

热度:318   发布时间:2016-04-24 01:32:28.0
如何让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();
  相关解决方案