我有一个用例,我想根据某些条件修改列表中的某些条目,并保留其余条目不变。为此,我正在考虑使用 java 流,但我找不到可行的解决方案。我知道使用filterandmap不会起作用,因为它会过滤掉不满足条件的元素。有什么我可以用的吗?
例子 -
List<Integer> a = new ArrayList<>();
a.add(1); a.add(2);
// I want to get square of element if element is even
// Current solution
List<Integer> b = a.stream().filter(i -> i % 2 == 0).map(i -> i * i).collect(Collectors.toList());
// This outputs - b = [4]
// But I want - b = [1, 4]
Run Code Online (Sandbox Code Playgroud)
您可以使地图操作有条件并删除过滤器:
List<Integer> b = a.stream()
.map(i -> i % 2 == 0 ? i * i : i)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)