【发布时间】: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来返回您拥有的字符串。 -
我添加了我的答案,看看