【问题标题】:sort list alphabet java? [duplicate]排序列表字母java? [复制]
【发布时间】:2016-03-17 20:54:44
【问题描述】:

我有这个List<String>

key.add("ss1");
key.add("s1");
...
key.add("s10");
key.add("s11");
...

然后我洗牌然后排序 我的结果是:

s1 s10 s11 s12 s13 s14 s15 s16 s2 s3 s4 s5 s6 s7 s8 s9 ss1

但我想拥有

s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 ss1 

这个怎么做?也许特别Comparator

【问题讨论】:

  • 为什么需要这个?如果您想按数字顺序排序,为什么要使用 List<String> 而不是 List<Integer>
  • @PaulBoddington 我认为他试图先按字母顺序排序,然后按数字部分作为数字排序。注意他最后想要的ss1
  • @childofsoong 好点。我错过了。
  • 我建议您查找有关如何进行自定义比较器的教程。您需要根据自己的输入字符串弄清楚如何拆分字符串和整数部分(看起来应该不太难),然后让比较器进行相应的比较。或者,您可以为存储字符串和数字的项目编写一个包装器类,实现Comparable,并有一个toString 来返回您拥有的字符串。
  • 我添加了我的答案,看看

标签: java list sorting


【解决方案1】:

你可以使用NaturalOrderComparator,这很好用:

Collections.sort(key, new NaturalOrderComparator());

【讨论】:

    猜你喜欢
    • 2014-12-29
    • 2023-03-20
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 2021-08-22
    • 2014-12-21
    • 1970-01-01
    相关资源
    最近更新 更多