java - Map<String, Set<T>> 到 Java 8 中的列表

标签 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. 姓名:“约翰”,年龄:18
  2. 姓名:“约翰”,年龄:19
  3. ....
  4. ....

有什么想法可以在 Java 8 中使用 streams 来实现吗?

最佳答案

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

关于java - Map<String, Set<T>> 到 Java 8 中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45758575/

相关文章:

java - 使用 Java Stream 从一组集合中收集所有对象

java - 无法序列化 Jackson xml 中的 OffsetDateTime

java - 如何使用自定义登录模块捕获响应状态 Tomcat JaasRealm

java - 整数除法的输入异常(Java)

java - 打开 html 代码时,自定义 StructuredTextEditor 不显示颜色代码。

java - 将encodeBase64消息放入Mysql中,当我收到此消息时,我有不同的结果

Java-8:Stream 如何将 Map<K, List<D>> 转换为 Map<D, List<K>>

java - 如何使用lambda来收集java8中多个列表中具有相同索引的元素

java - 在 Java 中查询具有完全匹配字段 MongoDB 的数组元素

java - 正则表达式提取点符号前后的数据?