java - 从 Set 中删除负值

标签 java loops collections iterator set

我期望remove()方法删除负值并仅打印正整数,但输出是-1 -2 -3 4

 import java.util.HashSet;
    import java.util.Iterator;
    import java.util.Set;

    public class GenericSetTester {
        public static void main(String[] args) {

            Set<Integer> integerSet = new HashSet<>();

            integerSet.add(0);
            integerSet.add(1);
            integerSet.add(2);
            integerSet.add(3);
            integerSet.add(4);
            integerSet.add(-1);
            integerSet.add(-2);
            integerSet.add(-3);

            for(Iterator<Integer> in = integerSet.iterator(); in.hasNext();){
                if(in.next() < 0)
                    in.remove();
                   int i = in.next();
                System.out.printf("%d ",i);
            }
        }
    }

最佳答案

@Eran 的答案纠正了您当前的方法。请注意,流提供了另一种方式来处理您的需求:

Integer[] array = new Integer[] {0, 1, 2, 3, 4, -1, -2, -3};
Set<Integer> integerSet = new HashSet<>(Arrays.asList(array));
integerSet = integerSet.stream()
    .filter(i -> i >= 0)
    .collect(Collectors.toSet());

关于java - 从 Set 中删除负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58577511/

相关文章:

R - 向量中特定值的嵌套循环

java - 菜单循环 - 订单需要

javascript - 无论如何,我可以通过使用循环来减少我的 jQuery 代码吗?

algorithm - 负载系数0.75是什么意思?

java - 可以通过浏览器运行普通的Java文件吗?

java - 删除数组中的第一个或最后一个索引而不出现 "Out of Bounds"错误

java - Hazelcast - 如何获取 EntryProcessor 中当前的 hazelcast 实例?

java - 如何将此代码片段变形为逻辑取决于索引值的 Java 8?

java - ArrayList.remove 在称为 Collection.remove 时会给出不同的结果

java - 要设置哪些 Java 命令行选项以允许远程调试 JVM?