Java 8:在Stream上执行reduce操作
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java 8:在Stream上执行reduce操作,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含964字,纯文字阅读大概需要2分钟。
内容图文
我有一个包含键值对的java.util.stream.Stream,如:
<1,3> <1,5> <3,1> <4,2> <4,7> <4,8>
现在我想合并所有具有相同密钥的条目:
<1,[3,5]> <3,[1]> <4,[2,7,8]>
数据已经排序,因此只需要合并连续的数据集.
现在我正在寻找一种方法来像上面那样转换流的内容,而不是将所有数据集加载到内存中.
我更喜欢使用包含值列表而不是单个值的不同对象类型来获取java.util.stream.Stream作为结果.
我唯一的方法是执行合并的自定义迭代器,但转换为迭代器并返回流似乎非常难看.
它的最佳方法是什么?
解决方法:
这是SteamEx的解决方案.
int[][] datasets = { { 1, 3 }, { 1, 5 }, { 3, 1 }, { 4, 2 }, { 4, 7 }, { 4, 8 } };
StreamEx.of(datasets) //
.collapse((a, b) -> a[0] == b[0], groupingBy(a -> a[0], mapping(a -> a[1], toList()))) //
.forEach(System.out::println);
您可以用数据集对象替换int [].我们可以添加peek来验证它是否是延迟加载/计算:
StreamEx.of(datasets) //
.peek(System.out::println) //
.collapse((a, b) -> a[0] == b[0], groupingBy(a -> a[0], mapping(a -> a[1], toList()))) //
.limit(1) //
.forEach(System.out::println);
内容总结
以上是互联网集市为您收集整理的Java 8:在Stream上执行reduce操作全部内容,希望文章能够帮你解决Java 8:在Stream上执行reduce操作所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。