当前位置: 首页 > 知识库问答 >
问题:

从java 8中的对象列表创建字符串和列表的映射[重复]

乔丁雨
2023-03-14

我有一个列表

保存的值如下

("Name1, 11, Delhi"),
("Name1, 12, Chennai"),
("Name2, 13, Delhi"),
("Name3, 14, Delhi"),
("Name4, 15, Delhi")

我正在尝试创建一个映射,其中键作为名称,值作为具有这些名称的Emp列表。

这就是我尝试过的,效果很好,但我正在寻找更好的方法。

Map<String, List<Emp>> nameMap = new HashMap<>();
  empList.forEach(
                empDto -> {
                    List<EmpDto> empDtoName = new ArrayList<>();
                    String name = empDto.getName();
                    if (nameMap .containsKey(name))
                    {
                        empDtoName = nameMap.get(name);
                    }
                    empDtoName.add(userRoleDto);
                    userRoleMap.put(usrNwId, empDtoName);
                }
        );

共有1个答案

陆子石
2023-03-14

使用Stream并使用groupingBy收集器收集其元素:

Map<String, List<Emp>> nameMap =
    empList.stream() 
           .collect(Collectors.groupingBy(Emp::getName));
 类似资料:
  • 我有以下课程: 我想使用Java流创建一个

  • 问题内容: 我想创建一个字符串映射到实例。这是正确的方法吗? 问题答案: 每当我想使用A时,我都发现切片是正确的选择,例如

  • 我有一个包含子对象列表的类,如下所示: 我有一个学生类列表,如下所示: 我可以使用传统的foreach循环对数据进行分组,但我想为此使用stream API,但不能这样做。你能帮忙吗?

  • 问题内容: 我有以下问题: 如何将以下代码片段转换为Java 8 lambda样式? 不知道,从以下内容开始: 问题答案: 您需要将自己的流放入列表: 有关其他信息,请访问文档 只是可以写成的另一种形式(因为类型将由编译器推断)

  • 毫无头绪,从以下入手:

  • 使用Java8 lambdas,在给定可能键的和的情况下,有效创建新的的“最佳”方法是什么?在这种情况下,您将得到一个包含可能的键的并希望生成一个其中是基于的某个方面构造的某种类型,即映射值类型。 我已经研究了几种方法,但认为一种方法比另一种方法更好(可能有一个例外--参见代码)。我将把“最佳”解释为代码清晰度和运行时效率的结合。这些是我想出来的。我肯定有人能做得更好,这是这个问题的一个方面。我不