首页 > 解决方案 > 从 java 8 中的对象列表创建字符串和列表的映射

问题描述

我有一个名字,身份证,地址List<Emp>在哪里。Emp

保存的价值就像

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

我正在尝试创建一个Map以键为名称和值的列表,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);
                }
        );

标签: javaarraylistjava-8hashmap

解决方案


使用 aStream并使用收集器收集其元素groupingBy

Map<String, List<Emp>> nameMap =
    empList.stream() 
           .collect(Collectors.groupingBy(Emp::getName));

推荐阅读