java 两个list,一个list按照另外一个排序_king__12的博客-CSDN博客_两个list排序

最近遇到对端接口批量查询不能根据批量条件列表顺序返回查询结果的问题,所以需要对返回数据进行重新排序。也就是说我们现在有一个需求:两个List,按照其中一个List元素的顺序对另一个List元素顺序进行排序

代码如下

// 根据orderList顺序排序,orderList不存在的元素放置在targetList最后面
private static void sort1(List<String> orderList, List<String> targetList) {
    targetList.sort(((o1, o2) -> {
        int io1 = orderList.indexOf(o1);
        int io2 = orderList.indexOf(o2);
        if (io1 != -1) {
            io1 = targetList.size() - io1;
        }
        if (io2 != -1) {
            io2 = targetList.size() - io2;
        }
        return io2 - io1;
    }));
}

// 根据orderList顺序排序,orderList不存在的元素放置在targetList最前面
private static void sort2(List<String> orderList, List<String> targetList) {
    targetList.sort(((o1, o2) -> {
        int io1 = orderList.indexOf(o1);
        int io2 = orderList.indexOf(o2);
        return io1 - io2;
    }));
}

进行本地测试

public static void main(String[] args) {
    List<String> orderList = Arrays.asList("111", "222", "333", "444", "555", "666");
    List<String> targetList = Arrays.asList("555", "111", "333", "777", "222", "666", "444");
    System.out.println("origin==> " + targetList);
    sort1(orderList, targetList);
    System.out.println("sort1==> " + targetList);
    sort2(orderList, targetList);
    System.out.println("sort2==> " + targetList);
}

完美的实现了想要的功能


原网址: 访问
创建于: 2022-01-07 11:46:05
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论