Lambda的流操作,变量必须为final,没有办法把产生的值赋给一个局部变量。
- 常用的方式,比如:常用的方式,比如:
list.stream().map(Collections.toMap(this:function)).collect(Collections.toList());
可以获得list结果,但无法获得计算中的其他符合条件的值。
- 可以创建一个final的数组,此时的数组的fianl属性是针对他的内存地址而言的,数组中的值是可以改变的,所以可以用这个做媒介将值保存下来从lambda表达式中拿出来。
final int[] tmp = new int[MAX_LENGTH];
items.forEach(record->{
if(condition){
tmp[0]=record.getValue();
return;
}
});
结束后,tmp[0]就拿到了中间值