lom*_*mza 7 java sorting android comparator
有没有办法在Android中正确排序国际字符串?我使用自定义比较器和compareTo()方法,但这对我来说还不够.我希望像"ö"这样的字母显示在"o"附近,但所有字母都在列表的末尾.如何强制比较器认为它们与"o,a等"相似?
Xae*_*ess 16
对语言环境敏感的字符串comaprision使用Collator.来自docs:
执行区分区域敏感的字符串比较.具体的子类RuleBasedCollator允许通过使用规则集来自定义排序规则排序.
比较字符串的示例:
Collator deCollator = Collator.getInstance(Locale.GERMANY); // or new Locale("pl", "PL") for polish locale ;)
System.out.println(deCollator.compare("abcö", "abco"));
Run Code Online (Sandbox Code Playgroud)
打印1.
如果要使用上面的collator对字符串列表进行排序,可以编写:
final List<String> strings = Arrays.asList(
"über", "zahlen", "können", "kreativ", "Äther", "Österreich");
Collections.sort(strings, deCollator); // Collator implements Comparator
System.out.println(strings);
Run Code Online (Sandbox Code Playgroud)
打印:
[Äther, können, kreativ, Österreich, über, zahlen]
Run Code Online (Sandbox Code Playgroud)
编辑:刚发现你是波兰人,所以波兰人的例子如下:
final List<String> strings = Arrays.asList(
"pi??", "piec", "Pieczka", "pi???", "piecz??", "piecz?tka");
Collections.sort(strings, Collator.getInstance(new Locale("pl", "PL")));
System.out.println(strings);
// output: [piec, piecz?tka, piecz??, Pieczka, pi??, pi???]
Run Code Online (Sandbox Code Playgroud)