Java的stream流操作

stream()简介

stream()方法在接口Collection中,接口定义如下

public interface Collection<E> extends Iterable<E> {
    default Stream stream() {
        return StreamSupport.stream(spliterator(), false);
    }
    //接口其它方法
}

绝大部分集合容器都实现了该接口,常用容器如Set、List都实现了Collection接口,以下为List的定义

public interface List<E> extends Collection<E> {
    //接口方法
}

将List转换为Stream:

List<Integer> list= Lists.newArrayList();
list.add(1);
list.add(2);
list.add(3);
Stream<Integer> stream=list.stream();

对应Stream接口,其定义如下:

public interface Stream<T> extends BaseStream<T, Stream<T>> {
    //其它方法
    .....
    //常用方法

    //对流里面对数据进行筛选,符合表达式predicate
    Stream filter(Predicate super T> predicate);
    //对流里面对元素进行映射,根据函数对象mapper,将T映射为R
     Stream map(Functionsuper T, ? extends R> mapper);
    //对流中对元素进行映射,T映射为Int
    IntStream mapToInt(ToIntFunction super T> mapper);
    //T映射为Long
    LongStream mapToLong(ToLongFunction super T> mapper);
    //T映射为Double
    DoubleStream mapToDouble(ToDoubleFunction super T> mapper);
    //根据自然比较规则,对流中元素排序
    Stream sorted();
    //根据给定对比较器排序
    Stream sorted(Comparator super T> comparator);
    //去重
    Stream distinct();
    //对流中元素进行收集,组合成集合
     R collect(Collector super T, A, R> collector);
    //根据比较规则,返回最小的元素
    Optional min(Comparator super T> comparator);
    //根据比较规则,返回最大的元素
    Optional max(Comparator super T> comparator);
}

利用stream对List进行排序

List<Integer> array= Lists.newArrayList();
array.add(3);
array.add(8);
array.add(9);
array.add(5);
List<Integer> list=array.stream().sorted(Comparator.comparing(Integer::intValue)).collect(Collectors.toList());
for (Integer integer : list) {
     System.out.println(integer);
}

输出结果为

3
5
8
9

你可能感兴趣的:(Java的stream流操作)