java-8 - Java 8中要映射的对象列表

标签 java-8 java-stream

我有这样的课

ObjectA
id 
type

id是唯一的,但是类型可以重复,所以如果我有一个像这样的ObjectA列表
(id, type) = (1, "A") , (2, "B"), (3, "C"), (4, "A")

那我要Map<type, List<id>>在哪里
map 是
< "A",[1,4],
  "B",[2],
  "C",[3] >

它可以与Java 7一起使用,但是找不到在Java 8中实现的方法。在Java 8中,我可以创建键,值对,但是如果类型相同,则无法创建列表。

最佳答案

yourTypes.stream()
         .collect(Collectors.groupingBy(
               ObjectA::getType,
               Collectors.mapping(
                    ObjectA::getId, Collectors.toList()
)))

关于java-8 - Java 8中要映射的对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48747537/

相关文章:

java - 流减少不兼容的类型

java - 无法理解这个 Java Stream+Generics 示例

java - 在 Function<T,R> 中格式化日期

Java 8 流 - 将元素映射到元素对

java - 使用 lambda 根据索引或最后一个数组值修改对 Java Stream 进行过滤

java - 为什么我不能在 IntelliJ IDEA 中将 lambda 表达式与 Spark Web 框架一起使用?

jpa - 函数式运算符导致 JPA 崩溃? (漏洞?)

java - 为什么此 Function<List<Person>,String> 不起作用?

lambda - java.util.function.Function 中的状态

Java 8 一个流到多个映射