java集合物件排序總結

坤少_jkson發表於2020-12-02

  java集合物件按照某個屬性進行排序有很多種方式,下面簡單記錄下

 1物件實現Comparable介面中的compareTo 方法,然後通過Collections.sort進行排序

 2通過Collections.sort配合匿名內部類Comparator來處理( Java1.7或更早版本的JVM不支援Lambda語法的情況下推薦使用這種) 或通過List介面的(JDK1.8預設實現方法)

Collections.sort(list, new Comparator<Order1>() {
    @Override
    public int compare(Order1 o1, Order1 o2) {
        return o1.getNumber()-o2.getNumber();
    }
});

  list.sort(new Comparator<Order1>() {
            @Override
            public int compare(Order1 o1, Order1 o2) {
                return o1.getNumber()-o2.getNumber();
            }
        });

JDK1.8介面預設實現方法
  default void sort(Comparator<? super E> c) {
        Object[] a = this.toArray();
        Arrays.sort(a, (Comparator) c);
        ListIterator<E> i = this.listIterator();
        for (Object e : a) {
            i.next();
            i.set((E) e);
        }
    }

 3通過方法引用的方式如下,當然也可以用lamadda(比如這種list.sort((o1, o2) -> o1.getNumber() - o2.getNumber());)但是建議用方法引用函式式介面Comparator提供了comparing,comparingInt,comparingLong
comparingDouble方法,方便對物件屬性做排序比較 如下所示

teachers.sort(Comparator.comparingInt(Order1::getNumber))
Collections.sort(teachers,Comparator.comparingInt(Order1::getNumber));

 

相關文章