Map <string,set <t =“”>&gt;在Java 8中列出

时间:2017-08-18 14:02:12

标签: java java-8 java-stream

所以我有这个课程:

 class User {
    public String name;
    public Integer age;

    public User(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
}

然后这个Map

 Map<String, Set<Integer>> map = new HashMap<>();
 map.put("User", Set.of(18, 19, 20, 21));

我想在这里获得4个用户的列表:

  1. 姓名:“John”,年龄:18
  2. 姓名:“John”,年龄:19
  3. ....
  4. ....
  5. 任何想法如何在Java 8中使用streams进行操作?

1 个答案:

答案 0 :(得分:3)

List<User> users = map.entrySet()
   .stream()
   .flatMap(e -> e.getValue().stream().map(x -> new User(e.getKey(), x)))
   .collect(Collectors.toList());

Set.of是java-9 btw