我需要从集合c中删除少于给定对象的所有元素。
签名应为void removeLess(Collection c, Object o)
这样的事情有用吗?:
void removeLess(Collection c, Object o) {
Iterator<Integer> itr = c.iterator();
while (itr.hasNext()) {
if (itr.next.compareTo(o) < 0) {
c.remove(o);
}
}
}
答案 0 :(得分:3)
您无法使用c.remove(o)
或使迭代器无效;但您可以使用Iterator.remove()
中的可选方法itr.remove()
。它删除了从“next”返回的最后一个对象。
答案 1 :(得分:0)
如果Collection
班的Iterator
支持remove
方法,它看起来会是这样。
你有语法错误 - 应该是itr.next()
。
另外,试试吧?
答案 2 :(得分:0)
不,它不起作用,因为当它有Iterator
时你无法修改它。您应该将要删除的元素累积到另一个临时集合中,然后将它们全部删除。
更好的方法是,如果你不关心元素所在的索引,那就是使用TreeSet<T>
类,它通过结构提供方法tailSet(T element)
,它完全符合你需要。
答案 3 :(得分:0)
您必须使用Iterator
的{{1}}方法,签名必须是:
remove
使用<E extends Comparable<? super E>> void removeLess(Collection<E> c, E o)
,例如NavigableSet<E>
,您可以这样做:
TreeSet