题目:
对[[-1,1,9],[0,0,3],[0,2,15],[1,1,20],[2,2,7]]进行排序,升序,按第一个元素的顺序,如果第一个元素相同就按照第二个元素的位置。
//[[-1,1,9],[0,0,3],[0,2,15],[1,1,20],[2,2,7]]排序package leetTest;import java.util.*;public class ListListSort {public static void main(String[] args) {List<List<Integer>> arr = new ArrayList<>();List<Integer> arr1 = new ArrayList<>();arr1.add(0);arr1.add(0);arr1.add(3);List<Integer> arr2 = new ArrayList<>();arr2.add(1);arr2.add(1);arr2.add(20);List<Integer> arr3 = new ArrayList<>();arr3.add(-1);arr3.add(1);arr3.add(9);List<Integer> arr4 = new ArrayList<>();arr4.add(2);arr4.add(2);arr4.add(7);List<Integer> arr5 = new ArrayList<>();arr5.add(0);arr5.add(2);arr5.add(15);arr.add(arr1);arr.add(arr2);arr.add(arr3);arr.add(arr4);arr.add(arr5);System.out.println(arr.toString());Collections.sort(arr,(a,b)->{if(a.get(0) != b.get(0)) {return a.get(0) - b.get(0);}if(a.get(1) != b.get(1)) {return a.get(1) - b.get(1);}return a.get(2) - b.get(2);});System.out.println(arr.toString());}}
输出结果:
[[0, 0, 3], [1, 1, 20], [-1, 1, 9], [2, 2, 7], [0, 2, 15]][[-1, 1, 9], [0, 0, 3], [0, 2, 15], [1, 1, 20], [2, 2, 7]]
比较器第一种写法(lambda表达式)
Collections.sort(list,(a,b)->{return a - b; //升序排序});
比较器第二种写法(常规写法)
Collections.sort(list,new Comparator<Integer>(){@Overridepublic int compare(Integer a,Integer b){return a - b;}});
