根据另一个对象列表中找到的值对对象列表进行排序

adi*_*moh 1 java arraylist comparator

有 2 个对象列表AB。所以List<A>List<B>. ABid有一个连接它们的 公共 Sting 场。B也有一个数字字段value。我们希望根据列表 Bvalue中的内容对列表 A 进行排序。

使用 Java API(例如Comparator )执行此操作的最佳方法是什么?

shm*_*sel 5

我将创建一个地图排名idvalue进行有效查找:

Map<String, Integer> rank = listB.stream()
        .collect(Collectors.toMap(b -> b.id, b -> b.value));
Run Code Online (Sandbox Code Playgroud)

然后您可以根据您的地图构造一个比较器并使用它对列表进行排序A

listA.sort(Comparator.comparing(a -> rank.get(a.id));
Run Code Online (Sandbox Code Playgroud)