登录
首页 >  文章 >  java教程

Stream 收集操作:两种写法对比,哪种更合理?

时间:2024-11-07 10:58:15 389浏览 收藏

从现在开始,努力学习吧!本文《Stream 收集操作:两种写法对比,哪种更合理?》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

Stream 收集操作:两种写法对比,哪种更合理?

两种收集操作写法对比

original post:

在 stream 操作中,有两种比较常见的收集操作写法,如下所示:

  • 写法一

    menulist.stream().collect(collectors.maxby(comparator.comparing(menu::getid))).get();
  • 写法二

    menuList.stream().collect(Collectors.collectingAndThen(Collectors.maxBy(Comparator.comparing(Menu::getId)), Optional::get));

这两种写法有何区别和优劣呢?

分析

1、功能等同

两种写法在功能上是等同的,都用于从 menulist 中收集具有最大 id 的 menu 对象。

2、设计初衷

  • 写法一:collect 操作原本的设计目的是对流进行收集操作,如统计、分组等。将 reduce 操作放在 collect 中是不合理的。
  • 写法二:collectingandthen 操作原本的设计目的是对流的处理结果进行后续操作,如将结果转换为 list、map 等。

3、推荐写法

从设计初衷和代码简洁性的角度考虑,更推荐使用 stream().sorted().findfirst() 的写法。这个写法更加直观高效,符合 stream 操作的语义。

结论

虽然两种写法在功能上等同,但从设计规约和团队协作的角度考虑,建议不使用上述两种写法,优先选择更合理、简洁的写法。

理论要掌握,实操不能落!以上关于《Stream 收集操作:两种写法对比,哪种更合理?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>