Stream流的常见生成方式
1:
Collection体系的集合可以使用默认方法Stream()生成流
default Stream<E> Stream()
List<String> list = new ArrayList<String>();
Stream<String> listStream = list.stream();
Set<String> set = new HashSet<String>();
Stream<String> setStream = set.stream();
2:Map体系的集合间接的生成流
java.util.Map 接口不是Collection 的子接口,且其K-V数据结构不符合流元素的单一特征,所以获取对应的流需要分key、value或entry等情况:
//Map体系的集合间接的生成流
Map<String,Integer> map = new HashMap<String,Integer>();
Stream<String> stream = map.keySet().stream();
Stream<Integer> stream1 = map.values().stream();
Stream<Map.Entry<String, Integer>> stream2 = map.entrySet().stream();
3:根据数组获取流
如果使用的不是集合或映射而是数组,由于数组对象不可能添加默认方法,所以Stream 接口中提供了静态方法of。
//数组可以通过Stream接口的静态方法of(T... values)生成流
String[] strArray = {"hello","world","java"};
Stream<String> strArrayStream = Stream.of(strArray);
Stream<String> strArrayStream1 = Stream.of("hello", "world", "java");
Stream<Integer> strArrayStream3 = Stream.of(10, 20, 30);