【问题标题】:Sort list of objects based on a value found in another list of object根据在另一个对象列表中找到的值对对象列表进行排序
【发布时间】:2021-06-30 04:58:21
【问题描述】:
有 2 个对象列表 A 和 B。所以List<A> 和List<B>。
A 和 B 有一个共同的 Sting 字段 id 将它们连接起来。
B 还有一个数字字段value。
我们想根据 list B 中的value 对列表 A 进行排序。
使用 Java API 的最佳方法是什么,比如 Comparator?
【问题讨论】:
标签:
java
arraylist
comparator
【解决方案1】:
我将通过value 创建地图排名id 以进行高效查找:
Map<String, Integer> rank = listB.stream()
.collect(Collectors.toMap(b -> b.id, b -> b.value));
然后您可以根据您的地图构造一个比较器,并使用它对A 列表进行排序:
listA.sort(Comparator.comparing(a -> rank.get(a.id));