收集列表<对象>地图<字符串,列表<对象>>中的Java 8中使用流

akapti:

我试图用java 8个流代替传统的for循环做这个迭代。

我有对象的列表List<Obligation>Obligation正在为ListString范围内。

Obligation 包含像场

f1f2类型String

f3 类型 List<String>

我想实现的是Map<String, List<Obligation>>这样,String在关键的使用Map是各自存在的价值List<String>从每个ObligationList<Obligation>

这是代码将如何看传统的for循环:

// newly initialized Map
Map<String, List<Obligation>> map = new LinkedHashMap<String, List<Obligation>>();

// assume the list is populated
List<Obligation> obligations = someMethod();

                for(Obligation obligation : obligations) {
                    for(String license : obligation.getLicenseIDs()) {
                        if(map.containsKey(license)) {
                            map.get(license).add(obligation);
                        } else {
                            List<Obligation> list = new ArrayList<Obligation>();
                            list.add(obligation);
                            map.put(license, list);
                        }
                    }
                }
他们是:

使用flatMap创建的对流Obligation和许可证ID,然后使用groupingBy由许可证ID,并收集它们。

Map<String, List<Obligation>> map =
    obligations.stream() // Stream<Obligation>
               .flatMap(o -> o.getLicenseIDs()
                              .stream()
                              .map(id -> new SimpleEntry<>(o,id))) // Stream<Map.Entry<Obligation,String>>
               .collect(Collectors.groupingBy(Map.Entry::getValue,
                                              Collectors.mapping(Map.Entry::getKey,
                                                                 Collectors.toList())));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java流:发行约收集到地图<字符串,对象>

Java的8名单<地图<字符串,对象>>到列表<地图<字符串,对象>>的键组和值数

Java的8流,对象的转换列表地图<字符串,将<字符串>>

Java的8个流 - 查找最大计数值地图<字符串,列表<对象>>

转换列表对象为使用Java 8个流对象的自定义地图

创建地图字符串和对象在Java中的列表8

Java8流列表<地图<字符串,对象>> groupingBy和计数值

创建使用Java 8流API字符串和排序列表中的地图

Java的游戏 - 绑定对象的列表,并附有地图<字符串,AnotherObject>内

地图<字符串,地图<对象,对象>>如何获得值对动态java中

从使用Java 8个流API对象列表收集名单

根据字符串标签对列表中的对象进行排序

如何从列表中获取对象中的字符串值?

Java 8流收集项目列表的地图

连接对象列表中的字符串

通过字符串在对象列表中查找值

从地图的列表中获取对象的名称

重构Dart中的地图对象列表?

如何从DART字符串列表中获取地图对象列表

比较多个对象列表中的字符串

如何在Java 8中使用reduce从对象列表创建字符串列表?

从地图内的列表中查找对象

Javascript:在对象列表中查找字符串

链接列表中的字符串,对象的高效构造函数

替换Java对象列表中的字符串内容

Java字符串到对象的列表

如何从列表对象中删除空字符串

Automapper:对象列表中的地图属性

如何使用对象列表中的字符串填充 ComboBox?