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

Java 實現中文字符串排序完整代碼示例

     編輯:Java 相關知識

Java 中文排序核心原理

在 Java 中對中文字符串進行排序,不能直接使用預設的字典序,因為 Unicode 編碼下的中文字符順序並不符合拼音或筆畫順序。正確的做法是利用 java.text.Collator 類,並指定 Locale.CHINA,這樣就能按照中文拼音順序正確排序。

完整代碼實現

下面通過一個完整的 Book 實體類與 Comparator 實現類,展示如何對包含中文書名的集合進行排序。

1. 實體類 Book

package test;

/**
 * 書籍信息類
 */
public class Book {
    private String bookId;
    private String bookName;
    private String publishingHouse;

    public Book(String bookId, String bookName, String publishingHouse) {
        this.bookId = bookId;
        this.bookName = bookName;
        this.publishingHouse = publishingHouse;
    }

    // Getter / Setter 省略...

    @Override
    public String toString() {
        return "書號:" + bookId + "\n書名:" + bookName + "\n出版社:" + publishingHouse;
    }
}

2. 中文排序比較器

package test;

import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;

/**
 * 中文字符串排序演示
 */
public class ChineseStringSortDemo implements Comparator {

    // 關鍵:獲取中文環境下的 Collator 實例
    private final Collator collator = Collator.getInstance(Locale.CHINA);

    public static void main(String[] args) {
        List books = new ArrayList<>();
        books.add(new Book("1", "英語", "英語出版社"));
        books.add(new Book("2", "日語", "日語出版社"));
        books.add(new Book("3", "德語", "德語出版社"));
        books.add(new Book("4", "法語", "法語出版社"));
        books.add(new Book("5", "俄語", "俄語出版社"));

        // 使用自定義比較器進行排序
        Collections.sort(books, new ChineseStringSortDemo());

        System.out.println("=== 按書名拼音排序結果 ===");
        for (Book book : books) {
            System.out.println(book);
            System.out.println("---");
        }
    }

    @Override
    public int compare(Book b1, Book b2) {
        // 直接比較書名,Collator 會自動按拼音順序處理
        return collator.compare(b1.getBookName(), b2.getBookName());
    }
}

運行結果說明

程序將按照拼音順序輸出:德語 → 法語 → 英語 → 日語 → 俄語。這證明了 Collator 配合 Locale.CHINA 完美解決了中文排序問題。

關鍵點總結

  • 必須使用 Collator.getInstance(Locale.CHINA) 獲取中文比較器
  • 實現 Comparator<T> 介面,在 compare 方法中調用 collator.compare()
  • 配合 Collections.sort() 或 List.sort() 即可完成排序
  • 同樣適用於數組排序:Arrays.sort(array, collator)

這種方式不僅代碼簡潔,而且完全符合 Java 國際化規範,是處理中文排序的標準做法。

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