Stream流的原理和lambda表达式差不多,本质上都是语法糖.
lambda表达式是基于匿名内部类来实现的,编译器最终编译是还是会转变成匿名内部类的形式来解析
stream流的主要作用为: 数据源 数据处理 收集结果
一下是一些stream流的常用方法
List<String> list = Arrays.asList("hello,lambda","陈兰","nihao");
// list.stream() //获取数据源
// .filter(str -> str.length() >= 5) //数据处理
// .forEach(str -> System.out.println(str)); //收集结果
// //limit
// list.stream()
// .limit(2)
// .forEach(str-> System.out.println(str));
//sorted
List<Integer> list = Arrays.asList(1, 5, 2, 32, 12);
// list.stream()
// .sorted(Comparator.reverseOrder())
// .forEach(num -> System.out.println(num));
// System.out.println(list.stream()
// .max(Integer::compareTo).get());
// System.out.println(list.stream()
// .min(Integer::compareTo).get());
// System.out.println(list.stream().count());
//map
// list.stream()
// .map(num -> num+10)
// .forEach(num-> System.out.println(num));
//reduce
// System.out.println(list.stream()
// .reduce((sum, num) -> sum + num).get());
//collection
List<Integer> collect = list.stream()
.filter(num -> num % 2 == 0)
.collect(Collectors.toList());
System.out.println(collect);