Java8 Stream
1、获取Stream方式
方式1:跟进Collection获取流
List<String> list=new ArrayList<String>();
Stream<String> stream = list.stream();
Map<String,String> map=new HashMap<String,String>();
Stream<String> stream2 = map.keySet().stream();
Stream<String> stream3 = map.values().stream();
Stream<Entry<String, String>> stream4 = map.entrySet().stream();
方式2:Stream静态方法of获取
Stream<String> of = Stream.of("aa","bb","cc");
String[] strs= {"11","22","33"};
Stream<String> of2 = Stream.of(strs);
// 特别注意:基本数据类型是不可以的
2、Stream常用方法
方法名称 | 方法作用 | 返回值类型 | 方法种类 |
---|---|---|---|
count | 统计个数 | long | 终结 |
forEach | 逐一处理 | void | 终结 |
filter | 过滤 | Stream | 函数拼接 |
limit | 取前几个 | Stream | 函数拼接 |
skip | 跳过前几个 | Stream | 函数拼接 |
map | 映射 | Stream | 函数拼接 |
concat | 组合 | Stream | 函数拼接 |
注意事项:
1、Stream 只能操作一次;
2、Stream返回的是新流;
3、Stream只有调用了终结方法,中间的方法才会执行;
2.1、forEach方法
@Test
public void hao2() {
List<String> list=Arrays.asList("张三","李四","王五","赵六");
list.stream().forEach(System.out::println);
}
…
3.1、方法总结
收集结果到集合:Collectors.toList()/Collectors.toSet()/Collectors.toCollection()
收集结果到数组:toArray()/toArray(int::new)
聚合计算
Collectors.maxBy/Collectors.minBy/Collectors.counting/Collectors.summingInt/Collectors.averagingint
分组:Collectors.groupingBy
分区:Collectors.partitionBy
拼接:Collectors.joinging
举例:
List<Role> contributeRoleList =Arrays.asList(new Role("aa"),new Role("bb"),new Role("cc"));
List<String> roleCodeList = contributeRoleList
.stream().map(Role::getRoleCode).collect(Collectors.toList());