獲取一個流非常簡單,有以下幾種常用的方式:
所有的 Collection 集合都可以通過 stream 默認方法獲取流;
Stream 接口的靜態(tài)方法 of 可以獲取數(shù)組對應的流。
方式1 : 根據(jù)Collection獲取流
首先, java.util.Collection 接口中加入了default方法 stream 用來獲取流,所以其所有實現(xiàn)類均可獲取流。
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中的靜態(tài)方法of獲取流
由于數(shù)組對象不可能添加默認方法,所以 Stream 接口中提供了靜態(tài)方法 of ,使用很簡單:
importjava.util.stream.Stream;
publicclassDemo06GetStream{
publicstaticvoidmain(String[]args) {
// Stream中的靜態(tài)方法: 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);
// 注意:基本數(shù)據(jù)類型的數(shù)組不行
int[]arr3={11,22,33};
Stream<int[]>stream9=Stream.of(arr3);
? }
}
備注: of 方法的參數(shù)其實是一個可變參數(shù),所以支持數(shù)組。
小結
通過Collection接口中的默認方法Stream stream()
通過Stream接口中的靜態(tài)of方法