如何名单<人>转换地图<字符串,列表<双>>,而不是地图<字符串,列表<人>>?

Nipun:

考虑到Person类有三个字段名称(字符串),年龄(INT),(双薪)。

我想创建一个名字为键和值作为薪水的地图(而不是Person对象本身),如果关键不是唯一的,然后使用链表来保存所有重复键的值。

我指的是在下面给出的链接中给出的解决方案:惯用从流中的Java 8创建多值映射 ,但仍不清楚如何与薪酬创造的HashMap的价值

我可以创建map<String, List<Double>>用foreach()。代码给出如下:

List<Person> persons= new ArrayList<>();
        persons.add(p1);
        persons.add(p2);
        persons.add(p3);
        persons.add(p4);

        Map<String, List<Double>> personsByName = new HashMap<>();

        persons.forEach(person ->
            personsByName.computeIfAbsent(person.getName(), key -> new LinkedList<>())
                    .add(person.getSalary())
        );

但我想用“groupingBy和收集”创建地图。如果我们想要Person对象本身作为值,那么代码下面给出:

Map<String, List<Person>> personsByNameGroupingBy = persons.stream()
                .collect(Collectors.groupingBy(Person::getName, Collectors.toList()));

但是我要像下面给出创建与工资作为价值的地图:

Map<String, List<Double>> 

如何实现这个场景?

他们是:

您可以使用Collectors.mapping到地图Person实例相应的工资:

Map<String, List<Double>> salariesByNameGroupingBy = 
    persons.stream()
           .collect(Collectors.groupingBy(Person::getName, 
                                          Collectors.mapping(Person::getSalary,
                                                             Collectors.toList())));

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何创建列表<T>地图<字符串,T>而不是地图<字符串,列表<T >>?

Java流列表<地图<字符串,双>>基于字符串需要平均

名单<地图<String,字符串>> VS列表<OBJECT>

如何收集地图<字符串,列表<字符串>>将acheve该列表排序?

如何将一个POJO的列表转换地图<字符串,列表>在Java流?

迭代虽然地图<字符串,列表<对象的内容>>和分配列表<对象的值>成单独的列表<双>

将字符串转换为地图列表

如何在机器人框架中将列表连接到字符串

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

减少地图(地图(地图(列表(字符串))))地形

如何在机器人框架中创建元组列表而不将每一对都转换为字符串

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

将双精度列表转换为分组字符串

在列表双中颤振转换字符串

Java的8炼油LAMBDA地图<字符串,列表<字符串>>将字符串地图关键要求

地图<字符串,地图<字符串,租车>>到列表<汽车>使用Java 8

Java的8:如何字符串转换为地图<String,字符串>?

您如何制作一个机器人,使其对带有句子列表的特定字符串的任何反应?

获得“类型不匹配:不能从转换的ArrayList <HashMap的<字符串,字符串>>将列表<地图<String,字符串>>”在实例映射列表

转换地图<整数,字符串>地图<字符串,字符串>

java-如何将字符串解析回地图列表

如何从dataweave 2.0中的地图列表中获取字符串值?

如何在地图列表中将时间排序为字符串 - Dart/Flutter

一个文本文件转换为地图<字符串,列表<字符串>>使用lambda

将字符串转换为地图

配置单元从双转换为字符串不是科学

Java类扩展的HashMap <字符串,地图<字符串,列表<字符串>>重写方法放不工作

地图字符串数组列表获取键和值

在Scala中反转地图(字符串->列表)