我期望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/