Java Android:如何按字母顺序排列特殊字符的数组列表?

Java Android:如何按字母顺序排列特殊字符的数组列表?,java,android,string,sorting,special-characters,Java,Android,String,Sorting,Special Characters,我正在开发一个android应用程序,其中我有挪威语的数据。现在,我必须按字母顺序对姓名列表进行排序,其中姓名包含特殊的挪威字符 Comparator<SetGetMethods> comperator = new Comparator<SetGetMethods>() { public int compare(SetGetMethods object1, SetGetMethods object2) { ret

我正在开发一个android应用程序,其中我有挪威语的数据。现在,我必须按字母顺序对姓名列表进行排序,其中姓名包含特殊的挪威字符

    Comparator<SetGetMethods> comperator = new Comparator<SetGetMethods>() {

        public int compare(SetGetMethods object1, SetGetMethods object2) {

                return object1.getCityname().compareToIgnoreCase(object2.getCityname());

        }

    };
    Collections.sort(temp, comperator);
比较器comperator=新比较器(){ 公共int比较(SetGetMethods对象1、SetGetMethods对象2){ 返回object1.getCityname().compareToIgnoreCase(object2.getCityname()); } }; 集合。排序(临时、竞争对手); 我使用上面的代码按字母顺序对列表进行排序。但在排序之后,上面显示的是带有普通字符的名称,下面显示的是带有特殊挪威字符的名称。例如,列表如下所示:

阿伦达尔 卑尔根 德拉门 Ålesund->(这应该在顶部,排序后在阿伦达尔之前)

所以,我的问题是,如果列表数据包含特殊字符(挪威字符),如何按字母顺序对列表进行排序。我将感谢任何建议,想法或样本代码来解决这个问题。谢谢….

请使用。这是一种执行区域设置敏感字符串比较的类型

在不了解挪威语/字符的情况下,我认为您应该使用以下代码:

Collator noCollator = Collator.getInstance(new Locale("no", "NO"));
noCollator.setStrength(Collator.SECONDARY);
...

请看一看基于中的挪威语的示例

基于此,我创建了一个基于重音差异将Å放在A之前的示例——注意使用“;”将\u00E5放在A之前。因此这适用于示例输入,但您需要根据您的语言知识添加其他带重音的挪威字符,以完成
挪威
比较字符串

String norwegian = "< a, \u00E5;A< b,B< c,C< d,D< e,E< f,F< g,G< h,H< i,I< j,J" +
                   "< k,K< l,L< m,M< n,N< o,O< p,P< q,Q< r,R< s,S< t,T" +
                   "< u,U< v,V< w,W< x,X< y,Y< z,Z";                      
RuleBasedCollator myNorwegian = new RuleBasedCollator(norwegian);     
List<String> words = 
  Arrays.asList("Arendal Bergen Drammen \u00E5lesund".split("\\s"));     
System.out.println(words);     
Collections.sort(words, myNorwegian);     
System.out.println(words);
String norwegian=“
试试这个

对于一个对象

class MyObject
{
  public String name;
  public int score;
}
如果您想按名称订购(在本例中使用挪威语),您可以这样做

Locale locale = new Locale("nb", "NO");
final Collator collator = java.text.Collator.getInstance(locale);

Collections.sort(your_array, new Comparator<MyObject>() {
    @Override
    public int compare(MyObject obj1, MyObject obj2) {
        return collator.compare(obj1.name, obj2.name);            
    }
});
Locale=newlocale(“nb”、“NO”);
final-Collator-Collator=java.text.Collator.getInstance(语言环境);
排序(您的_数组,新的Comparator(){
@凌驾
公共整数比较(MyObject对象J1、MyObject对象J2){
返回collator.compare(obj1.name,obj2.name);
}
});

我很困惑,因为这门课对我来说是全新的。您能否提供一些示例来理解collator的概念以及如何使用它对arraylist进行排序。你好,安迪,你的例子很好,再次感谢你。现在,如果我想对一个对象数组列表进行排序,其中一个对象包含几个信息,如名称、地址等,那么如何使用这个基于规则的计算器根据对象的“名称”信息按字母顺序对整个数组列表进行排序?您对此有什么想法或建议吗?好的,根据上面的评论,我得到了按需要对数组列表排序的解决方案……)很好的例子:现在我可以按应该的方式对字符串排序了。但是物体呢?我尝试过,但得到错误:
com.mycompany.myapp.model。MyClass无法转换为java.lang.String
:-/谢谢我尝试使用CollationKey对象对对象进行排序,但结果完全错误。这是预期的工作。