下面两种写法有啥区别

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

回答

1、两种写法在功能上是等同的。
2、第二种collectingAndThen是对流的处理结果又进行一步操作、虽然可以按照你的写法进行但脱离了设计的初衷。
原本是对流进行进一步加工,比如:collectingAndThen(toList(), list -> {你的操作})
3、第一种写法也脱离了设计的初衷:
stream..sorted().findFirst()就能达到你的需求,collect操作就是用来让执行收集操作的,collect中进行reduce不推荐。
总结:建议不使用上述两种写法,写法是灵活多变的,但要考虑设计规约和团队之间的协作,并推崇简洁的代码。

以上是下面两种写法有啥区别的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>