假設我有刪除元素HashSet
:從HashSet的迭代的
[1, 2, 3, 4, 5, 6]
我想遍歷它以這樣的方式,對於給定的總和,說6,而迭代的元素,如果我在總和= 6的Set
中找到2個元素,我想刪除另一個。 。E.克,如果我遍歷1,我應該刪除5.我試圖做這樣的事情:
HashSet<Integer> hs = new HashSet(arr);
int sum = 6;
for(int num : hs) {
if(hs.contains(sum - num)) {
hs.remove(sum - num);
}
}
顯然它拋出java.util.ConcurrentModificationException
。另一種方法是使用迭代器,但它將刪除當前元素,並且不會將任何其他元素作爲參數。我還能使用什麼?
更新:我知道使用額外的設置和所有的技術。如果可能的話,我只想要一個非常優化的解決方案,而不會增加時間和空間的複雜性。
將sum-num添加到一個新的集合(hs2)中並在最後執行hs.removeAll(hs2)? –
我知道這種方法。正試圖找到更優化的東西。此外,我只想刪除for循環中的元素,以便我甚至不遍歷該元素。 –
從'ConcurrentHashMap'創建'Set'也許吧?這可能是矯枉過正,但會按照你的需要工作。 –