Java 流的使用

Veg*_*eta 0 java stream

我有一个用例,我想根据某些条件修改列表中的某些条目,并保留其余条目不变。为此,我正在考虑使用 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)

Cha*_*ire 7

您可以使地图操作有条件并删除过滤器:

List<Integer> b = a.stream()
            .map(i -> i % 2 == 0 ? i * i : i)
            .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)