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

Java 集合實戰:使用 TreeSet 對字符串按長度排序

     編輯:Java 綜合教學

Java 集合實戰:使用 TreeSet 對字符串按長度排序

TreeSet 預設按自然順序(字符串為字典序)排序。若需按長度排序,必須提供 Comparator。

比較器實現

public class ComparatorByLength implements Comparator<String> {
    @Override
    public int compare(String s1, String s2) {
        int lenDiff = s1.length() - s2.length();
        // 長度相同時按字典序,保證 equals 一致性
        return (lenDiff == 0) ? s1.compareTo(s2) : lenDiff;
    }
}

測試代碼

public class TreeSetTest {
    public static void main(String[] args) {
        TreeSet<String> ts = new TreeSet<>(new ComparatorByLength());
        ts.add("aaaaaaaa");
        ts.add("zz");
        ts.add("nbaq");
        ts.add("cba");
        ts.add("abc");

        ts.forEach(System.out::println);
    }
}

輸出結果

zz
cba
abc
nbaq
aaaaaaaa

長度從小到大;同長度(cba、abc)按字典序排列。

關鍵提示

  • 比較器必須處理「相等但非同一對象」情況:長度相同卻內容不同時,不可直接返回 0,否則 TreeSet 會誤判為重複元素導致數據丟失。
  • Java 8 寫法更優雅:Comparator.comparingInt(String::length).thenComparing(Function.identity())。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved