Stream是元素的集合,类似Iterator(迭代器),只需给出需要对其执行操作的元素,比如过滤,大写等,Stream可以直接对元素操作.
Stream接口不是存储数据结构,数据源可以是一个集合,为了使用函数式编程创造;
Stream流只能执行一次操作,再次使用会报错
两种类型操作方法:
1.中间操作(生成一个Stream);
2.结束操作(执行或返回计算操作);
private static void Stream(){
//Stream(流)接口,只能使用一次,调用完下面再次使用报错
Stream<String> stream=Stream.of("good","good","study","day","day","up");
//foreach方法;
stream.forEach(System.out::println);
//filter:设置一个参数,参数可以调用一些判断方法,返回给调用者
stream.filter((s)->s.length()>3).forEach(System.out::println);
//自动去重
stream.distinct().forEach(System.out::println);
//map:Function函数,设置一个参数,参数调用方法并返回stream流
stream.map((s)->s.toUpperCase()).forEach(System.out::println);
//flatMap:可将两个集合中的流合并成一个流进行操作
Stream<List<Integer>> ss=Stream.of(Arrays.asList(1,2,3),Arrays.asList(4,5,6,6));
ss.flatMap((i)->i.stream()).distinct().forEach(System.out::println);
//reduce:需要传入两个参数,对这两个参数进行操作,返回一个optional值
Optional<String> op=stream.reduce((s1,s2)->s1.length()>=s2.length()?s1:s2);
System.out.println(op.get());
//collect:参数使用Collectors函数接口的方法,功能强大;
List<String> list=stream.collect(Collectors.toList());
list.forEach(System.out::println);
}
本章概述并演示了Java中的stream流,stream流是元素的集合,可以对各种元素进行各种操作,方便快捷;
有哪里不足或者有更好的建议,欢迎留言吐槽,有哪里不懂的小伙伴,可以私信我,我会一一答复,感谢认可,感谢支持!