从集合中删除元素的所有实例

时间:2011-04-20 18:40:52

标签: java object collections recursion

我需要从集合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);
        }
    }
}

4 个答案:

答案 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