stream()简介
stream()方法在接口Collection中,接口定义如下
public interface Collection<E> extends Iterable<E> {
default Stream<E> 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<T> filter(Predicate<? super T> predicate);
//对流里面对元素进行映射,根据函数对象mapper,将T映射为R
<R> Stream<R> map(Function<? super 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<T> sorted();
//根据给定对比较器排序
Stream<T> sorted(Comparator<? super T> comparator);
//去重
Stream<T> distinct();
//对流中元素进行收集,组合成集合
<R, A> R collect(Collector<? super T, A, R> collector);
//根据比较规则,返回最小的元素
Optional<T> min(Comparator<? super T> comparator);
//根据比较规则,返回最大的元素
Optional<T> 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