java 两个list,一个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);
}

完美的实现了想要的功能

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值