在HashSet的ArrayList中重新创建HashSet

时间:2012-08-07 11:59:51

标签: java arraylist hashset

我有代码

List<HashSet<Integer>> list = new ArrayList<HashSet<Integer>>(50);
pos = 17; // just some index less than 50
list.add(pos, new HashSet<Integer>());
list.get(17).add(99);
list.get(17).add(88);

过了一段时间我想用{99,88}删除HashSet并创建一个新的HashSet,如下所示:

// pos is still here
list.add(pos, new HashSet<Integer>());

允许吗?你知道更快的解决方案吗?感谢。

3 个答案:

答案 0 :(得分:4)

list.add(pos, new HashSet<Integer>());add a new set at that position and shift the existing one转到pos+1。这似乎不是你想要的。

如果您想要更换新套装,请使用set

list.set(pos, new HashSet<Integer>()); 

在性能方面,ArrayList#set在固定时间内运行,因此它是替换列表中现有集合的有效方法。

答案 1 :(得分:1)

如果要替换集合的内容,可以执行此操作

Set<Integer> set = list.get(pos);
set.clear();
set.add(99); set.add(98);

重用该集合会稍微提高效率。

答案 2 :(得分:0)

如果您使用番石榴,您可以更简洁地说:

List<Set<Integer>> list = Lists.newArrayListWithCapacity(50);
list.set(17, Sets.newHashSet(99, 88));