一、接口设计
从Java1.8开始提出了Stream流的概念,侧重对于源数据计算能力的封装,并且支持序列与并行两种操作方式;依旧先看核心接口的设计:
BaseStream:基础接口,声明了流管理的核心方法;
Stream:核心接口,声明了流操作的核心方法,其他接口为指定类型的适配;
基础案例:通过指定元素的值,返回一个序列流,元素的内容是字符串,并转换为Long类型,最终计算求和结果并返回;
System.out.println("sum1="+IntStream.of(1,2,3).sum());
System.out.println("sum2="+Stream.of("1", "2", "3").mapToLong(Long::parseLong).sum());</pre>
整个Stream处理过程上看可以分为三段:创建流、中间操作、最终操作,即多个元素值通过流计算最终获取到求和的结果;
二、创建操作
除了Stream提供的创建方法之外,在Java1.8中,很多容器类的方法都进行的扩展,提供了集合元素转流的能力;
Stream创建:
Stream<Integer> intStream = Stream.of(1, 2) ;</pre>
Collection创建:
List<String> getList = Arrays.asList("hello","copy") ;
Stream<String> strStream = getList.stream() ;</pre>
Array创建:
Double[] getArray = new Double[]{1.1,2.2};
Stream<Double> douStream = Arrays.stream(getArray) ;</pre>
上述方式创建的Stream流默认都是串行序列,可以通过Stream.isParallel进行判断;执行Stream.para