我有这样的代码
int[] array = {1, -1, 2, 3, -4};
Integer[] out = Arrays
.stream(array)
.filter(elem -> elem >= 0) // remove negatives
.boxed()
.collect(Collectors.toList())
.toArray(new Integer[array.length]);
但是过滤操作会将数组中的负元素保留为null
s。为什么不删除它们?
答案 0 :(得分:5)
您的out
数组与array
数组的长度相同。
做到这一点:
int[] out = Arrays
.stream(array)
.filter(elem -> elem >= 0) // remove negatives
.toArray();
或者这样做:
Integer[] out = Arrays
.stream(array)
.filter(elem -> elem >= 0) // remove negatives
.boxed()
.toArray(Integer[]::new);