1. 程式人生 > >List集合多次排序

List集合多次排序

寫在前面:

  有時候我們在查詢資料展示到前臺頁面的時候,需要對資料進行排序,特別是按照多個欄位進行排序,會很麻煩寫的程式碼也比較多。這個時候java8的特性可以讓我們很方便的對資料進行排序。

 

  話不多說,直接上程式碼。

public class Test {
    public static void main(String[] args) {
        List<DoubleSort> list = new ArrayList<DoubleSort>();
        list.add(new DoubleSort(0, "1",12));
        list.add(
new DoubleSort(3, "2",15)); list.add(new DoubleSort(2, "22",12)); list.add(new DoubleSort(3, "11",17)); list.add(new DoubleSort(3, "222",13)); list.add(new DoubleSort(3, null,10)); // 簡單排序 按照id升序排序 list.sort(Comparator.comparing(DoubleSort::getId)); list.forEach(e
-> System.out.println(e.getId() + "," + e.getName()+","+e.getAge())); System.out.println("----"); // 二次排序 按照id,age升序排序(先按照id排序,id相同的按照age排序) list.sort(Comparator.comparing(DoubleSort::getId).thenComparing(DoubleSort::getAge)); list.forEach(e -> System.out.println(e.getId() + "," + e.getName()+","+e.getAge())); System.out.println(
"----"); // 多次排序 按照id,name,age升序排序(先按照id排序,id相同的按照name升序排序(當name有null值,排序最前面),然後name相同的按照age升序排序) list.sort(Comparator.comparing(DoubleSort::getId).thenComparing(DoubleSort::getName, Comparator.nullsFirst(Comparator.naturalOrder())).thenComparing(DoubleSort::getAge)); list.forEach(e -> System.out.println(e.getId() + "," + e.getName())); } }

  上面程式碼的最後一個排序中包含有當指定屬性為null時的處理方式,我們可以將為null的排在最前面,直接呼叫對應的方法即可,非常方便,省去了不少的程式碼呢!

 

 

  參考資料:

  https://blog.csdn.net/york_2016/article/details/80169467------java 8 二次排序,和空指標處理示例