Set集合按条件删除元素
1. 循环对比,对Set进行遍历对比.相同则删除.
注: 1.不能在for循环中删除,这样会引起Set的size();变化,进而程序报错.
2.不能在foreach中使用set.remove(Object obj);方法
正确的是使用迭代器,利用其迭代器对象的remove()方法,但必须保证在使用remove()之前调用迭代器的next()方法;
部分代码示例如下:(要删除tempXaxis集合中与statDate相同的元素,其中tempXaxis的类型为HashSet)
... Iterator<Date> tempXaxisIterator = tempXaxis.iterator(); while (tempXaxisIterator.hasNext()) { Date next = tempXaxisIterator.next(); for (MosStat mosStat : mosStats) { Date statDate = mosStat.getStatDate(); if (next.equals(statDate)) { tempXaxisIterator.remove(); } } } ...
2. 利用集合的contains,判断元素是否在集合中,而后调用集合的remove()方法进行元素删除;
示例代码:
... for (MosStat mosStat : mosStats) { Date statDate = mosStat.getStatDate(); if (tempXaxis.contains(statDate)) { tempXaxis.remove(statDate); } } ...