收集Stream流中的结果
IntStream intStream = Stream.of(1, 2, 3, 4, 5).mapToInt(Integer::intValue);
intStream.filter(n -> n > 3).forEach(System.out::println);
intStream.filter(n -> n > 3).count;
intStream.filter(n -> n > 3).reduce(0, Integer::sum);
对流操作完成之后,如果需要将流的结果保存到数组或这集合中,可以收集流中的数据。
收集Stream流中的结果到集合中
Stream流提供了collect 方法,其参数需要一个java.util.stream.Collecto<T,A,R>接口对象来指定收集到哪种集合中,java.util.stream.Collectors类提供一些方法,可以作为Collector接口的实例:
public static <T> Collector<T, ?, List<T>> toList():转换为List集合。
public static <T> Collector<T, ?, Set<T>> toSet():转换为Set集合。
下面是两个方法的基本使用代码:
public class StreamCollection {public static void main(String[] args) {//将流中的数据收集到集合中Stream<String> stream01 = Stream.of("aa", "bb", "cc");Stream<String> stream02 = Stream.of("aa", "bb", "cc");//将流中的数据收集到List集合中final List<String> listcollect = stream01.collect(Collectors.toList());System.out.println("流处理后的数据结果(List):");for (String s: listcollect ) {System.out.println(s);}//将流中的数据收集到Set集合中final Set<String> setcollect1 = stream02.collect(Collectors.toSet());System.out.println("流处理后的数据结果(Set):");for (String s: setcollect1 ) {System.out.println(s);}}
}
收集Stream流中的结果到数组中
Stream提供了toArray 方法来将结果放到一个数组中,返回值是Object[]的:
Object[] toArray();
基本使用代码:
public class StreamToArray {public sta