天天看点

一个list作为参考,排列另一个list的顺序

有两个list列表:list1和list2存储的元素是统一类型,但二者的顺序不一致,现在需要根据其中一个list来排序另外一个list。

public static void main(String... str) {
    List<String> list = new ArrayList<>();
    list.add("B");
    list.add("D");
    list.add("C");
    list.add("A");
    
    List<String> list2 = new ArrayList<>();
    list2.add("A");
//        list2.add("B");
    list2.add("C");
    list2.add("D");
    
    System.out.println(list);//[B, D, C, A]

    setListOrder(list2,list);
    System.out.println(list);//[B, A, C, D]
}

public static void setListOrder(List<String> orderRegulation,  List<String> targetList) {
    Collections.sort(targetList,((o1, o2) -> {
        int io1 = orderRegulation.indexOf(o1);
        int io2 = orderRegulation.indexOf(o2);
        return io1 - io2;
    }));
}      

说明:如果targetList的数据比 orderRegulation的数据多,多出来的那部分数据,按照原来的顺序,且排在开头。