繁体   English   中英

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

[英]Android : How To Sort An Arraylist of Special Characters Alphabetically?

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

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

        public int compare(SetGetMethods object1, SetGetMethods object2) {

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

        }

    };
    Collections.sort(temp, comperator);

我使用上面的代码按字母顺序对列表进行排序。 但是经过排序后,带有正常字符的名称显示在顶部,带有特殊挪威字符的名称显示在它们下方。 例如,列表如下所示,

Arendal Bergen Drammen Ålesund -> (这应该在顶部,在 Arendal 之前排序后)

所以,我的问题是,我如何按字母顺序对列表数据包含特殊字符(挪威字符)的列表进行排序。 我将不胜感激任何解决问题的建议、想法或示例代码。 谢谢 .....

尝试这个

对于一个对象

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);            
    }
});
["

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

使用整理器 这是一种执行区域敏感字符串比较的比较器。

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

Collator noCollator = Collator.getInstance(new Locale("no", "NO"));
noCollator.setStrength(Collator.SECONDARY);
...
  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);            
        }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM