[英]Comparator to be used with Collections.sort() for a alphanumberic list
所以我有一堆字母數字項目列表,如...
"123456"
"alpha"
"tango"
"beta"
...
我希望使用Collections.sort()
來排序這個列表,但是我需要(1234,AAAA,aaaa,BBBB,bbbb,...)
順序排序(1234,AAAA,aaaa,BBBB,bbbb,...)
,然后是大小寫然后小寫話。 所有元素都是字符串,包括任何明顯的數字。 Collections.sort()
處理這種情況,因為它們實際上都是字符串,或者如果不是我將使用什么Comparator
來實現這一點? 或者是否有其他方法可以更有效地完成此操作,如使用正則表達式?
謝謝。
你可以使用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]
注意:您可能需要一個不同的整理器來滿足您的需求,盡管這個看起來很好。 在最壞的情況下,您可以使用特定規則創建RuleBaseCollator
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.