我想知道在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); 
        }
}产出:-南非、澳大利亚、印度
发布于 2018-10-25 08:56:13
来自HashSet的Javadoc
它不能保证集合的迭代顺序;特别是,它不能保证随着时间的推移,顺序将保持不变。
发布于 2018-10-25 09:01:33
HashSet与HashMap具有相同的值。此外,它在内部使用HashMap,其值常量对象称为“存在”。通过执行此操作,HashSet保证唯一性,但不对其排序,以类似于哈希映射的方式定位set元素。
您可以看到HashSet在互联网上的实现。
发布于 2018-10-25 09:02:20
如前所述,HashSet中元素的排序不能保证是任何东西,也不会随着时间的推移而保持不变。
这是由于底层数据结构的性质所致。
在您的示例中,字符串似乎存储在LIFO队列中,但HashSet的另一个实现可能会执行不同的操作(即使是这个实现也可能随着更多项的插入而开始不同的行为)。
https://stackoverflow.com/questions/52985177
复制相似问题