核心方法
public static void sort1(List<String> targetList, List<String> orderList) {
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;
}));
}
完整代码
import java.util.*;
public class xxtest{
public static void main(String args[]) {
List<String> targetList = new ArrayList<String>(Arrays.asList("c", "a", "b"));
List<String> orderList = new ArrayList<String>(Arrays.asList("a", "b", "c"));
sort1(targetList, orderList);
System.out.println("targetList:{}"+ targetList);
}
public static void sort1(List<String> targetList, List<String> orderList) {
targetList.sort(((o1, o2) -> {
int io1 = orderList.indexOf(o1);
int io2 = orderList.indexOf(o2);
System.out.println("before-o1:"+o1);
System.out.println("before-o2:"+o2);
System.out.println("before-io1:"+io1);
System.out.println("before-io2:"+io2);
if (io1 != -1) {
io1 = targetList.size() - io1;
}
if (io2 != -1) {
io2 = targetList.size() - io2;
}
System.out.println("after-o1:"+o1);
System.out.println("after-o2:"+o2);
System.out.println("after-io1:"+io1);
System.out.println("after-io2:"+io2);
System.out.println("after-io2-io1:"+ String.valueOf(io2-io1));
return io2 - io1;
}));
}
}
运行过程
list1.png