【问题标题】:Sort list of objects based on a value found in another list of object根据在另一个对象列表中找到的值对对象列表进行排序
【发布时间】:2021-06-30 04:58:21
【问题描述】:

有 2 个对象列表 AB。所以List<A>List<B>AB 有一个共同的 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));
    

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      相关资源
      最近更新 更多