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

时间:2017-06-25 17:56:08

标签: java collections hashset

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

2 个答案:

答案 0 :(得分:6)

标准 HashSet<T>的一个方面是无序。因此,您无法在特定索引处插入元素。或者如documentation

中指定的那样
  

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

当您执行插入,删除等操作时,HashSet<T>可能会执行重组。因此,for(...)循环中元素的顺序可以完全改变

Hashset<T>存在扩展名LinkedHashSet<T>维护插入的元素的顺序。

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

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

答案 1 :(得分:0)

我们可以see pic使用列表添加特定索引,然后使用object.addAll(listobject或setobject

Set<Integer> s=new HashSet<Integer>();
Set<Integer> s1=new HashSet<Integer>(); 
s1.add(6);
List<Integer> l=new ArrayList<Integer>();
l.add(5);
l.add(2,2);
l.add(0);
System.out.println(l);
S.addAll(l);//list
S.addAll(s1);//another set