所以我有一堆字母数字项目列表,如...
"123456"
"alpha"
"tango"
"beta"
...
我希望使用Collections.sort()
来排序此列表,但我需要先按顺序排序(1234,AAAA,aaaa,BBBB,bbbb,...)
,然后是大小写单词。所有元素都是字符串,包括任何明显的数字。 Collections.sort()
会处理这种情况,因为它们实际上都是字符串,或者如果不是{I}我将使用什么来完成此操作?
或者是否有其他方法可以更有效地完成此操作,如使用正则表达式?
感谢。
答案 0 :(得分:5)
您可以使用Collator:
List<String> list = Arrays.asList("1234","AAAA","aaaa","BBBB","bbbb");
Collator c = Collator.getInstance(Locale.ENGLISH);
c.setStrength(Collator.CANONICAL_DECOMPOSITION);
Collections.sort(list);
System.out.println("without collator: " + list);
Collections.sort(list, c);
System.out.println("with collator: " + list);
输出:
没有整理者:[1234,AAAA,BBBB,aaaa,bbbb]
与collator:[1234,AAAA,aaaa,BBBB,bbbb]
注意:您可能需要一个不同的整理器来满足您的需求,尽管这个看起来很好。在最糟糕的情况下,您可以创建a RuleBaseCollator
with your specific rules。