jdk8Stream API

filter

    Stream filter(PredicateT> predicate)

    返回一个新的经过过滤的流。

map

    Stream map(FunctionT,? extends R> mapper)

    返回一个经过map进行内容改变的新的流。

mapToInt

    IntStreammapToInt(ToIntFunctionT> mapper)

    返回一个IntStream ,其中包含将给定函数应用于此流的元素的结果。

sorted

    Stream sorted()

    Stream sorted(ComparatorT> comparator)

    返回由此流的元素组成的流,根据自然顺序排序。 如果该流的元件不是Comparable ,一个java.lang.ClassCastException执行终端操作时,可以抛出。

    对于有序流,排序稳定。 对于无序的流,不能保证稳定性。但是可以定义comparator来自定义排序。

forEach

    void forEach(ConsumerT> action)

    对此流的每个元素执行操作。

    这个操作的行为显然是不确定的。 对于并行流管道,此操作保证遵守流的遇到顺序,因为这样做将牺牲并行性的好处。 对于任何给定的元  素,动作可以在图书馆选择的任何时间和任何线索中执行。 如果操作访问共享状态,则负责提供所需的同步。

collect

    R collect(CollectorT,A,R> collector)

    使用Collector对此流的元素执行mutable reduction Collector 。 A Collector将用作参数的函数封装到collect(Supplier, BiConsumer, BiConsumer) ,允许重用集合策略和组合收集操作(如多级分组或分区)。如果流是并行的,并且Collector是concurrent ,并且流是无序的或收集器是unordered ,则将执行并发的减少(有关并发减少的细节,请参阅Collector )。这是一个terminal operation 。当并行执行时,可以实例化,填充和合并多个中间结果,以便保持可变数据结构的隔离。 因此,即使与非线程安全的数据结构(例如ArrayList )并行执行,并行还原也不需要额外的同步。

    API Note:以下将将字符串累加到ArrayList中: 

    ListasList = stringStream.collect(Collectors.toList()); 

     以下将按城市分类Person对象:

        Map> peopleByCity = personStream.collect(Collectors.groupingBy(Person::getCity));

       以下将按国家和城市对Person对象进行分类,将两个Collector组合在一起: 

       Map>  peopleByStateAndCity = personStream.collect(Collectors.groupingBy(Person::getState, Collectors.groupingBy(Person::getCity)));


想深入了解查看   https://github.com/winterbe/java8-tutorial

你可能感兴趣的:(jdk8Stream API)