TreeMap的值为TreeSet,如何从TreeSet中删除元素?

时间:2016-11-01 08:33:50

标签: java element treemap treeset

我有一个TreeMap,其值为TreeSet。现在我需要遍历键,并且对于TreeSet的每个元素,我必须删除该元素(然后继续执行某些操作),然后删除该TreeSet的第二个元素等。

我试过了:

for (Integer w : adjacencyList.get(keyNow)){        
    adjacencyList.get(keyNow).remove(w);
}

这不起作用,有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

使用显式迭代器:

if (adjacencyList.containsKey(keyNow)) {
    Iterator<Integer> iter = adjacencyList.get(keyNow).iterator();
    while (iter.hasNext()) {
        Integer w = iter.next();
        iter.remove();
    }
}

答案 1 :(得分:1)

与@ Eran的答案类似,但我会这样写。

Set<Integer> ints = adjacencyList.get(keyNow);
if (ints != null) {
    for (Iterator<Integer> iter = ints.iterator(); iter.hasNext();) {
         Integer w = iter.next();
         // do something with w
         iter.remove();
    }
}

注意:如果您不需要检查每个值,则可以清除该组。

Set<Integer> ints = adjacencyList.get(keyNow);
if (ints != null)
    ints.clear(); // remove all.