Java 8 Stream 如何还原为集合
来源:互联网 发布:八旗军战斗力 知乎 编辑:程序博客网 时间:2024/06/05 09:45
由于 Java 对集合的函数式操作并非原生态的,必须对得到的 stream() 进行过滤等操作,之后还是一个
stream(),一般我们最后返回给调用者需还原为相应的集合。这无法与 Scala 的 for … yield 操作相比。例如下面在使用
Stream API 过滤获得所有大于 3 的数字之后,方法的返回值还应该还原为 List, 这个需求非常自然
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);List<Integer> greaterThan3(list) { Stream<Integer> streamOfInteger = list.stream().filter( i -> i > 3); return streamOfInteger.ToIntegerList......;}
我们这儿的问题就是如何把上面的 streamOfInteger 转换为 List, 有以下几种办法
1 使用 Collectors.toList 方法 *
streamOfInteger.collect(Collectors.toList());
2 使用 toCollection() 方法 **
streamOfInteger.collect(Collectors.toCollection(ArrayList::new))
3 forEach() 方法 *
List newList = new ArrayList<>();
streamOfInteger.forEach(newList::add);
streamOfInteger.forEachOrdered(newList::add); //或者4 toArray() 方法
Integer[] arrayOfInteger = streamOfInteger.toArray(Integer[]::new);
List newList = Arrays.asList(arrayOfInteger);
此法更觉多此一举 此外,不妨窥探下使用 Stream API 处理后的 Map 该如何还原为 Map
Map<String, String> map = new HashMap<>();map.put("a", "aa");map.put("b", "bb");Stream<Map.Entry<String, String>> filtered = map.entrySet().stream() .filter(entry -> entry.getKey().equals("b"));filtered.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));//或filtered.collect(Collectors.toMap(entry -> entry.getKey(), entry -> entry.getValue()));//或Map<String, String> newMap = new HashMap<>();filtered.forEach(entry -> newMap.put(entry.getKey(), entry.getValue()));
- Java 8 Stream 如何还原为集合
- Java 如何将Array转换为Stream
- Java 8 将Stream转换为List
- Java 8 – 将 Stream 转换为 List
- Java Stream(8)(Stream完结)
- Java 8 Stream
- java 8 中的stream
- Java 8 Stream Tutorial
- Java 8 Stream API
- Java 8 Stream 原理
- Java 8 Stream
- Java 8 Stream API
- 如何通过Java代码将JsonArray转化为list集合
- Java 8函数式编程笔记(二)- 集合和流(stream)
- Java 8 Stream API详解
- Java 8: Stream map method
- Java 8: Stream filter method
- Java 8: Stream Reduction Operations
- C语言结构体数组
- 文件上传+验证码
- Hive表中四种不同数据导出方式以及如何自定义导出列分隔符
- IOI2007 矿工配餐
- 简述JAVA集合框架
- Java 8 Stream 如何还原为集合
- Gentoo Linux安装详解--根据官方WiKi整理
- Installing CUDA 7.5 on CentOS 7 - Unable to locate the kernel source
- 蓝牙协议分析1
- 1分钟彻底理解C语言指针的概念
- hdu 1505 city game(1506加强版)dp
- adb shell dumpsys可以查看30多种信息。
- AlarmManager 的使用
- lhgDialog窗口组件