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

Java 字符串數組按尾部數字排序:截取解析後用 Comparator 實現

     編輯:程式設計綜合問答

需求

String[] arr = {"1#zhang#3207237", "2#Wang#3207232"} 按最後 `#` 後數字升序排序。

完整實現

import java.util.*;

public class SortByTailNumber {
    public static void main(String[] args) {
        String[] data = {"1#zhang#3207237", "2#Wang#3207232", "3#Li#100"};
        Arrays.sort(data, (s1, s2) -> {
            int n1 = extractTailNumber(s1);
            int n2 = extractTailNumber(s2);
            return Integer.compare(n1, n2);
        });
        System.out.println(Arrays.toString(data));
        // 輸出: [3#Li#100, 2#Wang#3207232, 1#zhang#3207237]
    }

    private static int extractTailNumber(String s) {
        int idx = s.lastIndexOf('#');
        return (idx >= 0 && idx < s.length() - 1)
                ? Integer.parseInt(s.substring(idx + 1))
                : 0;
    }
}

關鍵點

  • lastIndexOf('#') 定位最後一個分隔符。
  • substring(idx+1) 取尾部數字子串。
  • Integer.parseInt 轉數值比較,避免字典序("100" < "2")。
  • Java 8+ Lambda 表達式簡潔;舊版本用匿名 Comparator 類。

擴展:穩定排序保持原序

List list = new ArrayList<>(Arrays.asList(data));
list.sort(Comparator.comparingInt(SortByTailNumber::extractTailNumber));
// 或用 LinkedHashMap 保持插入序
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved