Lambda表达式如何返回产生的结果?

Lambda的流操作,变量必须为final,没有办法把产生的值赋给一个局部变量。

  1. 常用的方式,比如:常用的方式,比如:
list.stream().map(Collections.toMap(this:function)).collect(Collections.toList());

          可以获得list结果,但无法获得计算中的其他符合条件的值。
         

  1. 可以创建一个final的数组,此时的数组的fianl属性是针对他的内存地址而言的,数组中的值是可以改变的,所以可以用这个做媒介将值保存下来从lambda表达式中拿出来。
final int[] tmp = new int[MAX_LENGTH];
items.forEach(record->{
	if(condition){
			tmp[0]=record.getValue();
			return;
	}
});

结束后,tmp[0]就拿到了中间值

你可能感兴趣的:(Java)