Stream: 封装一系列对单列集合/数组的操作的api
获取Stream流对象: *** 所有的流对象只能使用一次
Stream<String> stream = Stream.of("张三丰", "张翠山", "赵敏", "周芷若", "张无忌");
stream.skip(2).filter(name -> name.startsWith("张"));
System.out.println(stream.count());
以上代码编译会报stream has already been operated upon or closed错误。解决方法是对
stream.skip(2).filter(name -> name.startsWith("张"));重新获取流。
Stream<String> stream = Stream.of("张三丰", "张翠山", "赵敏", "周芷若", "张无忌");
Stream<String> stream1 = stream.skip(2).filter(name -> name.startsWith("张"));
System.out.println(stream1.count());
List/Set
.stream();
[]
Stream.of();
Map
.keySet().stream();
.entrySet().stream();
.values().stream();
调用Stream的api执行操作:
延迟方法:该类方法调用后,会返回一个【新的Stream对象】,并且不会执行任何的业务操作
filter -- 实现数据过滤
map -- 将一种数据类型的流转成另一种数据类型的流
skip -- 跳过前几个
limit -- 取前几个
Stream.concat() -- 合并流对象
终结方法:该类方法调用后,不会返回Stream流对象,会触发之前所有的业务操作
forEach --- 实现遍历
count -- 实现计数
collect -- 将流中的数据重新转为集合