0

此方法接受一组字符串,然后删除该组偶数长度的所有字符串。问题是我知道集合不按元素计数,所以我必须给我们一个迭代器,但是,如何从集合中删除特定的“元素”?

private static void removeEvenLength(Set<String> thing) {
    Iterator<String> stuff = thing.iterator();

    while (stuff.hasNext()) {
        String temp = stuff.next();
        if (temp.length() %2 == 0) {
            temp.remove(); // What do I do here?
        }
    }
}
4

4 回答 4

5

尝试使用迭代器

 stuff.remove();
于 2013-10-12T04:37:55.813 回答
3
private static void removeEvenLength(Set<String> thing) {
        thing.add("hi"); 
        thing.add("hello");
          Iterator<String> stuff = thing.iterator();
          System.out.println("set"+thing);
            while (stuff.hasNext()) {
                String temp = stuff.next();
                if (temp.length() %2 == 0) {
                    stuff.remove(); 
                }
            }
            System.out.println("set"+thing); 
}
于 2013-10-12T04:49:11.140 回答
0

如果您使用的是 Java 8,则可以尝试以下操作:

public static void removeEvenLength(final Set<String> set){
    set.stream().filter(string -> string.length() % 2 == 0).forEach(set::remove);
}
于 2013-10-12T04:52:01.013 回答
0

您不能这样做,因为 Set 类在您尝试在不使用迭代器的情况下从集合中删除元素时快速失败并抛出 ConcurrentModificationException。

于 2020-04-09T17:37:54.640 回答