如何对字母数字字符串进行排序

如何对字母数字字符串进行排序,第1张

如何对字母数字字符串进行排序

这是有关如何执行此 *** 作的独立示例(未特别优化):

final Pattern p = Pattern.compile("^\d+");String[] examples = {    "1some", "2some", "20some", "21some", "3some", "some", "1abc", "abc"};Comparator<String> c = new Comparator<String>() {    @Override    public int compare(String object1, String object2) {        Matcher m = p.matcher(object1);        Integer number1 = null;        if (!m.find()) { return object1.compareTo(object2);        }        else { Integer number2 = null; number1 = Integer.parseInt(m.group()); m = p.matcher(object2); if (!m.find()) {     return object1.compareTo(object2); } else {     number2 = Integer.parseInt(m.group());     int comparison = number1.compareTo(number2);     if (comparison != 0) {         return comparison;     }     else {         return object1.compareTo(object2);     } }        }    }};List<String> examplesList = new ArrayList<String>(Arrays.asList(examples));Collections.sort(examplesList, c);System.out.println(examplesList);

输出量

[1abc, 1some, 2some, 3some, 20some, 21some, abc, some]

说明

  • 该示例使用一个常数
    Pattern
    来推断数字是否位于
    String
    的起始位置。
  • 如果第一个不存在
    String
    ,则将其与第二个进行比较。
  • 如果确实存在于第一个中,它将检查第二个。
  • 如果第二个中不存在,它将
    String
    再次比较两个s
  • 如果两者都存在,它将比较
    Integer
    s而不是整个
    String
    s,因此导致数值比较而不是字典比较
  • 如果数字比较相同,则返回到整个字典的字典比较
    String


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5428790.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-11
下一篇2022-12-11

发表评论

登录后才能评论

评论列表(0条)

    保存