java - 如何考虑字符串中的数字对字符串进行排序?

标签 java sql string sorting

我有一些代码类似于以下代码:

  • aaa_bbb_d2_aa
    aaa_bbb_d3_aa
    aaa_bbb_d11_aa

  • eee_b2b_c2_ac

一般来说,它们应该作为字符串排序,但是在“aaa_bbb_d3_aa”与“aaa_bbb_d11_aa”的情况下,与简单字符串排序相比,前者应该排在第一位。

对于排序很重要的数字部分始终位于“_d”或“_c”子字符串之后,并且后面始终以“_aa”或“_ac”结束字符串。

Java 或 SQL 中的高效排序算法是什么?

最佳答案

Collections.sort(yourListOfString, (String a, String b) ->
{
    int comparison = Integer.valueOf(a.split("_")[2].replaceAll("[dc]", "")).compareTo(Integer.parseInt(b.split("_")[2].replaceAll("[dc]", "")));

    return comparison == 0
             ? a.split("_")[3].compareTo(b.split("_")[3])
             : comparison;
});

(我假设您的所有字符串都在列​​表中)

关于java - 如何考虑字符串中的数字对字符串进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30533985/

相关文章:

sql - 在 Oracle 中,使用 1=1 启动 SQL 查询的 WHERE 子句有用吗?

sql - Sybase - FROM 子句中的子查询

Ruby 实现是_numeric?对于字符串,需要更好的选择

java - 查找两个字符串中的共同字母(Java)

java - 在 JTable 中显示 arrayList 的 arrayList

java - Micronaut RxHttpClient null

java - 如何在 Java 源文件中获取给定行号的周围方法

c# - SQL 语句的某些部分嵌套太深 c# EF 5

java - 通过子节点内容在XML中搜索子节点

java - 如何在showMessageDialog中打印双二维数组?