首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 中文排序面試題:按拼音/筆畫自定義 Comparator 實現

     編輯:程式設計綜合問答

面試常見題:將「張三」「李一」「王五」按名字最後一字的讀音排序為「李一」「張三」「王五」。

解題思路

  1. 建立漢字數字映射表(Map<String, Integer>),如「一」→1、「二」→2...
  2. 實現 Comparator<String>,提取每個姓名的最後一字(或指定位置字符)。
  3. 查表獲取對應數值進行比較。

核心代碼

Collections.sort(list, new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
        int v1 = map.get(o1.substring(1)); // 取第二字
        int v2 = map.get(o2.substring(1));
        return v1 - v2;
    }
});

此法適用於已知有限字符集的排序規則;通用中文排序建議使用 Collator.getInstance(Locale.CHINA)。

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