如何在Java 8中借助Guava将两个列表打包为不可变Multimap?
关于Guava/Java 8中函数式配对逻辑的实现思路
聊到用函数式风格处理这类配对循环的需求,我琢磨了几个可行的方向,跟你分享下:
- 最先想到的是用
zippingFunction,但它要求返回Map.Entry类型,可惜不管是Guava还是Java 8里,都没有可公开构造的List Entry,这直接堵死了这条路。 - 目前能想到的最贴合函数式风格的写法,是让
zippingFunction返回一个Pair(Guava里确实有com.google.common.base.Pair这个类),它能明确表达“一对元素”的语义,比其他方式更严谨。 - 还有个备选是返回双元素列表,但列表本身是可变的,没法直观体现它恰好只包含2个元素,既不严谨也容易出问题,个人不太建议用这个方案。
- 要是能合法创建
Map.Entry的话,那绝对是最优解!毕竟Map.Entry就是为键值对场景设计的,语义精准还是标准类型。其实Java里有AbstractMap.SimpleEntry这个公开实现类,完全可以用来构造合法的Map.Entry实例,这应该是最理想的选择。
内容的提问来源于stack exchange,提问作者djechlin
相关产品推荐
相关产品推荐

