Java 8 Lambda-流过滤器更改值

时间:2018-11-07 20:59:56

标签: java lambda

我需要更改从过滤器获取的值

.stream()
.filter(profile -> profile.getValue().equals("test"))
.findFirst()
.map(profile -> profile.setProperty(true))

我得到了不兼容的类型:推断的类型不符合上限,谢谢

2 个答案:

答案 0 :(得分:4)

.map(profile -> profile.setProperty(true))

不正确; 如何这是不正确的,如何解决它取决于您。

map期望传递给它的lambda返回一个 new 值,而不是修改现有值。您可以将property设置为true来创建新值,也可以使用ifPresent代替map来就地更改现有值。

答案 1 :(得分:0)

如果有人为此而苦苦挣扎,这就是使用ifPresent的方法(如上所述):

.stream()
.filter(profile -> profile.getValue().equals("test"))
.findFirst()
.ifpresent(profile -> profile.setProperty(true))