天天看點

一個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的資料多,多出來的那部分資料,按照原來的順序,且排在開頭。