最近遇到对端接口批量查询不能根据批量条件列表顺序返回查询结果的问题,所以需要对返回数据进行重新排序。也就是说我们现在有一个需求:两个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);
}
完美的实现了想要的功能
本文介绍了一种根据一个指定顺序的列表来重新排序另一个列表元素的方法,并提供了两种不同的排序策略实现:一种将未出现在顺序列表中的元素放在末尾,另一种则将其置于开头。

9742

被折叠的 条评论
为什么被折叠?



