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