簡體   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