And*_*llo 3 java lambda java-8 java-stream
我需要修改int上的列表,如下所示:
这是我的尝试:
list.stream()
.filter(val -> val.getValue() == 10)
.map(val -> {
val.doubleValue();
return val;
})
.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
问题是我正在过滤元素,而我想保留所有元素,只需修改那些== 0.
编辑:列表由元素组成MyType,定义如下:
public class MyType {
private int val;
public MyType(int v){
this.val = v;
}
public void doubleVal(){
val*val;
}
public int getValue(){
return val;
}
}
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
不要用filter.将所有逻辑放入map:
list.stream()
.map(val -> val == 10 ? 2*val : val)
.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
编辑:在您澄清列表的元素是Integers 后,我简化了代码.请注意,原件List保持不变.
| 归档时间: |
|
| 查看次数: |
9132 次 |
| 最近记录: |