java

Stream详解

2017-10-13  本文已影响128人  felayman

Java 8引入了全新的Stream API。这里的Stream和I/O流不同,它更像具有Iterable的集合类,但行为和集合类又有所不同.

我们先来看看Java里面是怎么定义Stream的:

A sequence of elements supporting sequential and parallel aggregate operations.

我们来解读一下上面的那句话:

Stream是元素的集合,这点让Stream看起来用些类似Iterator;
可以支持顺序和并行的对原Stream进行汇聚的操作;

Stream<T>接口继承自BaseStream<T, S extends BaseStream<T, S>>,而BaseStream接口则是Stream的基本定义接口.

BaseStream的核心接口方法:

而Stream<T>继承了BaseStream<T, Stream<T>,则说明Stream具有BaseStream接口中所描述的方法的能力. 并且Stream对其进行了扩展,如果说BaseStream只是定义了流(Stream)具有哪些能力,则Stream接口则定义了一个具体的流能做哪些事情.

以下是Stream的的核心接口方法:

对Stream中的元素进行指定比较器进行排序

对Stream进行规约操作

通过指定的比较器获取元素的最大值

获取Stream的元素内容大小

向一个Stream中添加元素

连接两个Stream成一个Stream

下面就通过具体实例来看每个方法的使用方式:

Person类:


filter(Predicate<? super T> predicate)

获取一批用户中年龄大于23的人数

System.out.println(
                Arrays.asList(
                        new Person(22,"lisi"),
                        new Person(23,"zhangsan"),
                        new Person(25,"wangwu"),
                        new Person(24,"zhouliu"),
                        new Person(27,"zhaoqi")
                        ).stream()
                        .filter(x -> x.age > 23)
                        .count()
        );

结果为:

3
上一篇下一篇

猜你喜欢

热点阅读