java - 使用分割字符串中的新对象类型创建嵌套映射

标签 java java-stream

我有这个流

jedis.lrange("users", 0, -1).stream()
  .map(user -> user.split(":"))
  .collect(Collectors.groupingBy(
     user -> user[0], 
     Collectors.toMap(a -> a[1], a2 -> a2[2])
  ));

返回 Map<String, Map<String, String>>但我想得到 Map<UUID, Map<String, Long>>索引 0 应转换为 UUID,1 转换为 String,2 转换为 Long。我该怎么做?

最佳答案

您是否考虑过尝试解析要转换的字符串?大致如下:

Map<UUID, Map<String, Long>> groupedNestedMap = jedis.lrange("users", 0, -1)
        .stream()
        .map(user -> user.split(":"))
        .collect(Collectors.groupingBy(user -> UUID.fromString(user[0]), 
                Collectors.toMap(a -> a[1], a2 -> Long.parseLong(a2[2]))));

关于java - 使用分割字符串中的新对象类型创建嵌套映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58476270/

相关文章:

java - Gradle无法在Java项目中复制PNG文件

java - GameManager 类型类的单一职责原则

java - 从流中收集某些元素

java - 传递一个非关联函数来减少

java - Clob 列 java.sql.SQLException : ORA-01461: can bind a LONG value only for insert into a LONG column

java - Map.Entry 和 map.get(key) 有什么区别

Java 流 API - 避免使用相同的谓词两次来计算平均值

具有通用类型的 Java collect() Stream

java - 在 LinkedHashMap 中结合 remove 和 put 方法

java - 为什么 Stream.flatMap 不能接受一个集合?