我希望即使没有为请求的区域设置定义重音,collator也会对字符串进行排序。
public static void main(String[] args)
{
List<String> strings = new LinkedList<>();
strings.add("Zverina");
strings.add("Zulu");
strings.add("Žurerka");
// This is correct order for Slovenian locale
Collections.sort(strings, new MyComparator(Locale.forLanguageTag("en-GB")));
System.out.println(strings);
Collections.sort(strings, new MyComparator(Locale.forLanguageTag("sl-SI")));
System.out.println(strings);
}
private static class MyComparator implements Comparator<String>
{
private Collator collator;
public MyComparator(Locale locale)
{
collator = Collator.getInstance(locale);
}
@Override
public int compare(String s1, String s2)
{
return collator.compare(s1, s2);
}
}
上面的代码将[Zulu,Žurerka,Zverina]和[Zulu,Zverina,Žurerka]的列表排序。如果我使用en-GB语言环境,我希望得到相同的(第二)结果。
例如,如果对于en-GB语言环境将Z和Ž视为相等,我想指定一个后备语言环境来获取规则(在本例中为sl-SI)。
我尝试使用Collators强度和分解参数而没有任何成功。