2012-02-24 20 views
2

私はノルウェー語でデータを持っているアンドロイドアプリケーションを開発しています。今、名前にアルファベット順の名前を並べ替える必要があります。名前には特殊なノルウェー文字が含まれています。Android:アルファベット順に特殊文字のArraylistを並べ替えるには?

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

     public int compare(SetGetMethods object1, SetGetMethods object2) { 

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

     } 

    }; 
    Collections.sort(temp, comperator); 

上記のコードを使用してアルファベット順にソートしました。しかしソート後は、通常の文字の名前が上に表示され、名前の下に特殊なノルウェーの文字が表示されます。例えば、リストは、以下のように示されている

アーレン ベルゲン ドラメン オーレスン - >(これは、ソート後アーレンダール前に、一番上にする必要があります)

だから、私の質問は、どのようにすることができます私は一種aはリストデータに特殊文字(ノルウェー語の文字)が含まれるアルファベット順のリスト。問題を解決するための提案、アイデア、サンプルコードをお待ちしております。ありがとう.....

答えて

3

JavaDoc for the RuleBasedCollator classでノルウェーをもとに例を見てみましょう。

これに基づいて、アクセントの違いに基づいてAの前にÅを挿入するこの例を作成しました。「;」の使用に注意してください。 Aの前に\ u00E5を入力してください。これはあなたの入力例では機能しますが、norwegian比較文字列を完成させるためには、言語の知識に基づいて他のアクセント付きノルウェー語文字を追加する必要があります。

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

Iを行うことができます(ノルウェーの言語を使用して、この場合には)名前で注文したい場合このクラスはまったく新しいものなので、混乱しています。 collat​​orの概念と、それがarraylistのソートにどのように使用されているかを理解するためのサンプルサンプルをいくつか教えてください。それはもっと感謝します。 – Junaid

+0

OK - これを含めるために私の答えを編集しました。 – Andy

+0

[OK]を、私はこのサンプルで試しています....サンプルのために多くのありがとう...... :) – Junaid

1

Collatorを使用してください。これは、ロケール依存の文字列比較を実行するComparatorのタイプです。

ノルウェー語/文字を知ることがなければ、私は次のコードを使用したいと思う:

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

オブジェクトに対してこの

を試してみてください

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);    
    } 
}); 
+0

ありがとう!私はCollat​​ionKeyオブジェクトでオブジェクトをソートしようとしましたが、結果は全く間違っていました。これは期待どおりに動作しています。 – Tooroop

+0

あなたはようこそ! – m4n3k4s

関連する問題