This question already has answers here:
Sorting alphanumeric strings java

(4 个回答)


7年前关闭。




我有这个字符串列表
Car1

Car2

Car3

......


Carn

我想根据其中的数字对这个列表进行排序。
例如,如果我有 Car3, Car1, Car12, Car45
我希望它像 Car1, Car3, Car12, Car45 一样排序。
我使用过 Collections.sort() ,但它返回类似 Car1, car12, car3, Car45 的东西。
我应该怎么做才能把它放在正确的顺序?

最佳答案

您需要一个自定义比较器,例如

    Collections.sort(list, new Comparator<String>() {
        public int compare(String s1, String s2) {
            int i1 = Integer.parseInt(s1.replaceAll("\\D", ""));
            int i2 = Integer.parseInt(s2.replaceAll("\\D", ""));
            return Integer.compare(i1, i2);
        }
    });

10-08 00:18