簡體   English   中英

與Collections.sort()一起使用的比較器,用於alphanumberic列表

[英]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來實現這一點? 或者是否有其他方法可以更有效地完成此操作,如使用正則表達式?

謝謝。

你可以使用Collat​​or

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]
與collat​​or:[1234,AAAA,aaaa,BBBB,bbbb]

注意:您可能需要一個不同的整理器來滿足您的需求,盡管這個看起來很好。 在最壞的情況下,您可以使用特定規則創建RuleBaseCollator

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM