我有一些String元素的HashSet集合,如何在特定位置添加新元素?我看到了文档,并没有找到任何可以做到的方法。
答案 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