1、介绍
Stream接口将待处理的数据看作一种流
List<String> list = new ArrayList<String>();
Stream<String> stream = list.stream();//创建串行流
Stream<String> stream = list.parallelStream();//创建并行流
2、forEach()方法用于迭代数据
int[] num = new int[]{2,4};
num.stream().forEach(n->System.out.println(n));
3、map()方法对流中元素进行函数运算
int[] num = new int[3]{1,-2,3};
num.stream().map(n->Math.abs(n)).forEach(n->System.out.println(n));
4、filter()方法用于过滤
int[] num = new int[3]{1,-2,3};
num.stream().filter(n->n>0).forEach(n->System.out.println(n));
5、reduce方法用于合成流中的值
int[] num = new int[]{1,3,5,6};
int m = Arrays.stream(num).reduce((t,n)->t+n).getAsInt();
System.out.println(m);
6、collect()方法的参数为一个java.util.stream.Collector类型对象,可以用来实现流数据的转化操作,如Collectors.toList()、Collectors.toSet()
List<Integer> numbers = Arrays.asList(-1, -2, 0, 4, 5);
List<Integer> abss = numbers.stream().map( n -> Math.abs(n)).collect(Collectors.toList());
7、一种函数式编程方法引用写法
forEach(n->System.out.println(n));
===========等价于=================
forEach(System.out::println);
===========类似的=================
reduce((t,n)->t+n);
===========等价于=================
reduce(Integer::sum)