Java中输出顺序Hashset的基础是什么

时间:2014-03-31 21:03:42

标签: java hashset

我正在尝试打印Hashset的内容。并将其输出为[D,E,F,A,B,C]。我期待它输出类似[F,E,D,B,A,C]的东西。这背后有逻辑吗?

public class TestSomething {
    public static void main(String[] args) {
        HashSet<String> hashSet = new HashSet<String>();
        hashSet.add("F");
        hashSet.add("E");
        hashSet.add("D");
        hashSet.add("B");
        hashSet.add("A");
        hashSet.add("C");

        System.out.println(hashSet.toString())
    }
}

3 个答案:

答案 0 :(得分:3)

来自HashSet javadoc

  

它不保证集合的迭代顺序;在   特别是,它不保证订单将保持不变   随着时间的推移。

如果您需要订购套装,请尝试LinkedHashSet

答案 1 :(得分:0)

来自Java Documentation

  

[Hashset]实现了Set接口,由哈希表(实际上是HashMap实例)支持。它不能保证集合的迭代顺序;特别是,它不保证订单会随着时间的推移保持不变。

答案 2 :(得分:-1)

将LinkedHashSet用于预期输出。