1、lambda的奥义是使用lambda一个接着一个处理,不要停,一路处理下去直到业务结束。常用的函数有:
- filter: 对集合内的元素做过滤,过滤后个数<= 原有的集合个数
- map: 对集合内的元素做一对一的转换,集合内的元素个数不变
- reduce:对集合内的元素做聚合操作,比如求和,字符串拼接等
- collect: 生成一个新的集合
2、好处:lambda结构对计算优化是友好的,且这种方式会产生一种美。
3、使用collector让数据重新生成一个list;
这个stream的流式编程也有另外的一个名字叫函数式编程。之前学习的swift语言也有该功能,好神奇。
package day19;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class UseStreamAppMain {
public static void main(String[] args) {
List<String> myList = addElementToList(new ArrayList<>());
System.out.println("-----lambda的奥义-------");
// lambda的奥义是使用lambda一个接着一个处理,不要停,一路处理下去直到业务结束。
// 好处:lambda结构对计算优化是友好的,且这种方式会产生一种美。
myList.stream().filter(s -> s.length() >= 4).map(String::toUpperCase).forEach(System.out::println);
// 当然也可以使用collector让数据重新生成一个list;
System.out.println("使用lambda重新生成一个list--");
List<String> longgerStrList = myList.stream().filter(s -> s.length() > 4).map(String::toUpperCase).collect(Collectors.toList());
longgerStrList.forEach(System.out::println);
// reduce 对集合做聚合操作
System.out.println("-------reduce 做聚合操作-------");
List<Integer> intList = new ArrayList<>();
intList.add(1);
intList.add(2);
intList.add(3);
intList.add(4);
int result = intList.stream().reduce(0, (m, n) -> m + n);
System.out.println(result);
}
public static List<String> addElementToList(List<String> list) {
for(int i = 0; i < 10; i++) {
if (i % 5 == 0) {
list.add("str" + "0" + i);
}
list.add("str" + (i % 5));
}
return list;
}
}
输出结果:
image.png
网友评论