栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/453264.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号