java - 按字母排序字符串数组,然后按数字排序

标签 java sorting arrays

我有一个字符串数组,我有来自数据库的 fileterd,在 Java 中有这样的输出

[ABCD XYZ M1210, 
ABCD XYZ M149, 
ABCD XYZ M5130, 
ABCD XYZ N1420, 
ABCD XYZ T11299, 
ABCD XYZ S11044]

我希望按如下方式对我的数组进行排序:

[ABCD XYZ M149, 
ABCD XYZ M1210, 
ABCD XYZ M5130, 
ABCD XYZ N1420,  
ABCD XYZ S11044,
ABCD XYZ T11299]

这是我特别想要的最后一个元素

 ==> String theStringIWant = myStringArray.get(myStringArray.size() - 1);

我需要做的是先按字母顺序对“XYZ”后的字母进行排序,然后再按数字对字母进行排序,例如 ABCD XYZ M1210 < ABCD XYZ M5130 因为 5130 大于 1210。

如有任何帮助,我们将不胜感激

*任何对 java 等中合适的库的引用

干杯

最佳答案

Arrays.sort(array, new Comparator<String>() {
    @Override
    public int compare(String s1, String s2) {
        String stringPart1 = extractStringPart(s1); 
        String stringPart2 = extractStringPart(s2); 
        int result = stringPart1.compare(stringPart2);
        if (result == 0) {
            int intPart1 = extractIntPart(s1);
            int intPart2 = extractIntPart(s2);
            result = Integer.compare(intPart1, intPart2);
        }
        return result;
    }
});

两个提取方法留作练习。阅读 String 和/或 Matcher 的 javadoc 以了解您可以如何做。

关于java - 按字母排序字符串数组,然后按数字排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19983818/

相关文章:

java - @PostConstruct GlassFish 中的部署错误

java - arraylist 部分到 3 个字符串部分

java - (Java)用于隐层反向传播的偏导数

sorting - R:按另一个 data.frame 对多列进行排序?

algorithm - 找到元素的最佳排序

javascript - 将数字的javascript数组拆分为范围

python - 如何使用 numpy 轻松从二维矩阵中获取这些值?

java - Maven 在本地存储库中找到 Artifact 但无法编译

ruby-on-rails - Rails 4.1 Postgres 字符串数组 : Can't Save After Modifying

c - 使用 char** 数组作为结构成员加载/填充结构,c