如何在HashSet中的特定索引/位置添加元素?

Ori*_*ion 2 java collections hashset

我有一些String元素的HashSet集合,我如何在特定位置添加新元素?我看到了文档,但没有找到任何可以做到的方法.

Wil*_*sem 6

标准 的一个方面HashSet<T>是它是无序的.因此,您无法在特定索引处插入元素.或者如文档中指定的那样:

此类实现Set接口,由哈希表(实际上是HashMap实例)支持.它不能保证集合的迭代顺序 ; 特别是,它不保证订单会随着时间的推移保持不变.该类允许null元素.

当您执行插入,删除等操作时,可能HashSet<T>会进行重新散列.结果,for(...)循环中元素的顺序可以完全改变.

存在一个扩展的Hashset<T>,在LinkedHashSet<T>其保持它们被所述元素的顺序插入.

TreeSet<T>另一方面,A 使用树,并根据顺序关系(在该元素之前发射小于另一个对象的对象)对元素进行排序.

如果你可以在一个随机索引处插入一个元素会很奇怪,因为这会导致至少某些具有特定索引的操作的O(n)时间.通常使用a HashSet<T>在O(1)中执行插入,移除等(平均时间).