检索HashSet中的数据

时间:2018-10-25 08:51:37

标签: java collections set hashset

我想知道以哪种方式在HashSet中检索数据 我以不同的顺序插入了数据,而输出数据则以另一个顺序。 有人可以告诉我背后的逻辑吗?

代码是这样的:-

    class Test 
    { 
        public static void main(String[]args) 
        { 
            HashSet<String> h = new HashSet<String>(); 

            // Adding elements into HashSet using add() 
            h.add("India"); 
            h.add("Australia"); 
            h.add("South Africa"); 
            System.out.println(h); 
        }
}

产出:-[南非,澳大利亚,印度]

5 个答案:

答案 0 :(得分:3)

来自HashSet的Javadoc

  

它不保证     集的迭代顺序;特别是,它不能保证     顺序将随时间保持不变。

答案 1 :(得分:0)

HashSet与具有Value的HashMap相同。此外,它在内部使用带有值常量对象HashMap的“ PRESENT”。通过执行此HashSet保证唯一性,但不能保证顺序它与Hashmap相似地定位set元素。

您可以在Internet上看到HashSet的实现。

答案 2 :(得分:0)

如前所述,不能保证HashSet中元素的顺序是任何东西,也不保证其随时间恒定。

这是由于基础数据结构的性质所致。

在您的情况下,字符串似乎存储在LIFO队列中,但是HashSet的另一种实现可能会做不同的事情(甚至当插入更多项时,它的行为也可能会有所不同)。

答案 3 :(得分:0)

如上所述,请参阅HashSets的Javadoc-不保证顺序。 https://docs.oracle.com/javase/7/docs/api/java/util/HashSet.html

答案 4 :(得分:0)

如果希望LinkedHashSet保持元素顺序,请使用它。