Java8 : Map list of objects by key

标签 java java-8 java-stream

Map<A, List<B>> xFunction() {    
    Map<A, List<B>> mapList = new HashMap<>();
    List<A> aList = x.getAList();
    for (A a : aList) {
        List<B> bList = getBList(a.getId());
        mapList.put(a, bList);
    }
    return mapList;
}

如何在 java 8 中使用收集和分组或映射来转换它?

我尝试使用类似的东西:

x.getAList
.stream()
.map(a -> getBList(a.getId)) //return a list of B
.collect(Collectors.groupingBy (...) )

干杯

最佳答案

您需要Collectors.toMap:

Map<A, List<B>> map =
    x.getAList()
     .stream()
     .collect(Collectors.toMap (Function.identity(), a -> getBList(a.getId())));

关于Java8 : Map list of objects by key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46641259/

相关文章:

java - Guava future 等待回调

java - ByteBuddy 附加到本地正在运行的进程

java - 从 Stream Java 8 创建排序的 HashMap

java - 创建一个生成另一个给定函数的 x 和 y 值的方法

java - 如何将 LocalDate 转换为 SQL Date Java?

java - 在 reduce 操作中使用 StringBuilder(...) 作为标识值会产生不可预测的结果

java - arraylist java上的程序

java - 在javafx中下载图像时的进度条

java - 我想计算一个集合中的集合的数量,在带有流的集合中

java - 流中间操作排序