题目:
    对[[-1,1,9],[0,0,3],[0,2,15],[1,1,20],[2,2,7]]进行排序,升序,按第一个元素的顺序,如果第一个元素相同就按照第二个元素的位置。

    1. //[[-1,1,9],[0,0,3],[0,2,15],[1,1,20],[2,2,7]]排序
    2. package leetTest;
    3. import java.util.*;
    4. public class ListListSort {
    5. public static void main(String[] args) {
    6. List<List<Integer>> arr = new ArrayList<>();
    7. List<Integer> arr1 = new ArrayList<>();
    8. arr1.add(0);
    9. arr1.add(0);
    10. arr1.add(3);
    11. List<Integer> arr2 = new ArrayList<>();
    12. arr2.add(1);
    13. arr2.add(1);
    14. arr2.add(20);
    15. List<Integer> arr3 = new ArrayList<>();
    16. arr3.add(-1);
    17. arr3.add(1);
    18. arr3.add(9);
    19. List<Integer> arr4 = new ArrayList<>();
    20. arr4.add(2);
    21. arr4.add(2);
    22. arr4.add(7);
    23. List<Integer> arr5 = new ArrayList<>();
    24. arr5.add(0);
    25. arr5.add(2);
    26. arr5.add(15);
    27. arr.add(arr1);
    28. arr.add(arr2);
    29. arr.add(arr3);
    30. arr.add(arr4);
    31. arr.add(arr5);
    32. System.out.println(arr.toString());
    33. Collections.sort(arr,(a,b)->{
    34. if(a.get(0) != b.get(0)) {
    35. return a.get(0) - b.get(0);
    36. }
    37. if(a.get(1) != b.get(1)) {
    38. return a.get(1) - b.get(1);
    39. }
    40. return a.get(2) - b.get(2);
    41. });
    42. System.out.println(arr.toString());
    43. }
    44. }

    输出结果:

    1. [[0, 0, 3], [1, 1, 20], [-1, 1, 9], [2, 2, 7], [0, 2, 15]]
    2. [[-1, 1, 9], [0, 0, 3], [0, 2, 15], [1, 1, 20], [2, 2, 7]]

    比较器第一种写法(lambda表达式)

    1. Collections.sort(list,(a,b)->{
    2. return a - b; //升序排序
    3. });

    比较器第二种写法(常规写法)

    1. Collections.sort(list,new Comparator<Integer>(){
    2. @Override
    3. public int compare(Integer a,Integer b){
    4. return a - b;
    5. }
    6. });