首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java Vector/List 自訂排序實作:Comparator 介面完整範例

     編輯:Java 程式設計入門

Java 集合框架透過 Comparator 介面支援自訂排序邏輯。本文示範如何實作 Comparator 對自訂物件進行降序排序,並使用 Collections.sort() 完成排序操作。

核心程式碼

import java.util.*;

class Elem {
    private int value;
    public Elem(int v) { this.value = v; }
    public int getValue() { return value; }
    @Override public String toString() { return String.valueOf(value); }
}

class DescComparator implements Comparator {
    @Override
    public int compare(Elem o1, Elem o2) {
        return Integer.compare(o2.getValue(), o1.getValue()); // 降序
    }
}

public class VectorSortDemo {
    public static void main(String[] args) {
        List list = new Vector<>();
        list.add(new Elem(1));
        list.add(new Elem(22));
        list.add(new Elem(3));
        list.add(new Elem(14));

        System.out.println("排序前:" + list);
        Collections.sort(list, new DescComparator());
        System.out.println("降序後:" + list);
    }
}

關鍵點解析

  • 泛型 Comparator<T>:避免強制轉型,編譯期型別安全
  • Integer.compare():避免減法溢位風險,語意清晰
  • Vector vs ArrayList:Vector 為同步老舊類別,新程式碼優先使用 ArrayList

Java 8+ Lambda 簡寫


// 降序
list.sort((a, b) -> Integer.compare(b.getValue(), a.getValue()));

// 或使用 Comparator 靜態方法
list.sort(Comparator.comparingInt(Elem::getValue).reversed());

多欄位複合排序


list.sort(
    Comparator.comparing(Elem::getCategory)
              .thenComparingInt(Elem::getValue).reversed()
);

適用場景

自訂物件排序、多欄位排序、動態排序規則(依使用者偏好切換升降序)、非自然順序排序需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved