获取一个流非常简单,有以下几种常用的方式:
所有的 Collection 集合都可以通过 stream 默认方法获取流;
Stream 接口的静态方法 of 可以获取数组对应的流。
方式1 : 根据Collection获取流
首先, java.util.Collection 接口中加入了default方法 stream 用来获取流,所以其所有实现类均可获取流。
publicinterfaceCollection{
defaultStream<E>stream()
}
importjava.util.*;
importjava.util.stream.Stream;
publicclassDemo04GetStream{
publicstaticvoidmain(String[]args) {
// 集合获取流
// Collection接口中的方法: default Stream<E> stream() 获取流
List<String>list=newArrayList<>();
// ...
Stream<String>stream1=list.stream();
Set<String>set=newHashSet<>();
// ...
Stream<String>stream2=set.stream();
Vector<String>vector=newVector<>();
// ...
Stream<String>stream3=vector.stream();
}
}
java.util.Map 接口不是 Collection 的子接口,所以获取对应的流需要分key、value或entry等情况:
importjava.util.HashMap;
importjava.util.Map;
importjava.util.stream.Stream;
publicclassDemo05GetStream{
publicstaticvoidmain(String[]args) {
// Map获取流
Map<String,String>map=newHashMap<>();
// ...
Stream<String>keyStream=map.keySet().stream();
Stream<String>valueStream=map.values().stream();
Stream<Map.Entry<String,String>>entryStream=map.entrySet().stream();
}
}
方式2 : Stream中的静态方法of获取流
由于数组对象不可能添加默认方法,所以 Stream 接口中提供了静态方法 of ,使用很简单:
importjava.util.stream.Stream;
publicclassDemo06GetStream{
publicstaticvoidmain(String[]args) {
// Stream中的静态方法: static Stream of(T... values)
Stream<String>stream6=Stream.of("aa","bb","cc");
String[]arr={"aa","bb","cc"};
Stream<String>stream7=Stream.of(arr);
Integer[]arr2={11,22,33};
Stream<Integer>stream8=Stream.of(arr2);
// 注意:基本数据类型的数组不行
int[]arr3={11,22,33};
Stream<int[]>stream9=Stream.of(arr3);
}
}
备注: of 方法的参数其实是一个可变参数,所以支持数组。
小结
通过Collection接口中的默认方法Stream stream()
通过Stream接口中的静态of方法