我的任务是过滤一个数组,更改剩余的元素并返回包含更改值和未更改值的数组。我的代码:
return Arrays.stream(sentence.split(" "))
.filter(/* do some filter to each value */)
.map(/* map this value*/)
.collect(Collectors.joining());
我怎样才能返回一个包含已更改的和未更改值的数组?
最佳答案
filter
移除元素。如果你不想删除元素,而只是改变其中的一些,你可以使用 ?:
或 map
中的 if-else 以有选择地更改元素。
例如:
System.out.println(Stream.of("abc", "def", "ghi")
.map(a -> a.equals("def") ? "xyz" : a)
.collect(Collectors.toList()));
或者:
System.out.println(Stream.of("abc", "def", "ghi")
.map(a -> {
if (a.equals("def"))
return "xyz";
else
return a;
})
.collect(Collectors.toList()));
这只会将等于 def
的元素更改为 xyz
(对于每个其他元素,它将简单地保持该元素原样)并且输出将是:
[abc, xyz, ghi]
关于java - 在流过滤器之后访问所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48242644/