如果未为请求的区域设置定义规则,则Collat​​or不会对重音进行排序

时间:2016-10-13 12:10:20

标签: java collation

我希望即使没有为请求的区域设置定义重音,collat​​or也会对字符串进行排序。

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)。

我尝试使用Collat​​ors强度和分解参数而没有任何成功。

0 个答案:

没有答案