如何根据唯一标识合并两个对象的列表?

How to merge List of two objects based on unique id?

我有一个class

class Topic {
    Integer id
    String name
    Integer numberPosts
}

还有一个

class TopicDetails {
    Integer id
    Integer numberPosts
}

第二个实际上是查询结果的容器,这就是相似性的原因。

我有两个列表 List<Topic>List<TopicDetails>。对象在两个列表中的 id 都是唯一的。第二个将最多包含第一个列表中的所有 ID。

我想将第二个列表中的数据合并到第一个列表中。我知道有一些简单的方法,比如

但是有更好的方法吗? Collection 框架有很多新方法,所以我想在 groovy 中可能有一些优雅的方法来代替上面提到的方法。

EDIT 我忘了提到第一个最初没有关于 numberPosts 的信息。这就是第二个存在的原因,即作为数据库信息的容器。

列表仍然只是一个列表。您可以每次都使用 lambda 表达式和 "find" ID,但是您没有任何效率上的提高。至少对于其中一个列表而言,地图是必经之路。