2017-12-27 8 views
-2

は、ここに私のコードArrayListがコンパレータでソートされないのはなぜですか?

ArrayList<String> list = new ArrayList<>(); 
    list.add("Emily"); 
    list.add("Gary"); 
    list.add("Harry"); 
    list.add("Tom"); 

    Comparator<String> name; 
    name = (String e1, String e2) -> e2.compareTo(e1); 

    Collections.sort(list, name); 

    for(String user: list){ 
     System.out.println(user); 
    } 

私はアルファベット順にコンパレータを使用して、リスト内の名前をソートしたいが、私が出てソートされたリストを印刷するとき、それはソートされていないです。私は間違って何をしていますか?

+1

私はあなたのコードを実行すると、それがソートされます。コンパレータの使用。何がソートされていないと思いますか? – azurefrog

+0

また、自然順序付けを持つ 'String'のような型の場合は、独自のコンパレータを書く必要はなく、' Comparator.reverseOrder() 'を使うだけで同じ効果を得ることができます。 – azurefrog

答えて

2

あなたは(からZまで)のアルファベット順にソートしたい場合はどうなるので、あなたの出力は(ZからAへ)逆で、e2e1の場所を逆転されています

e1.compareTo(e2); 

が、以来、 StringクラスはComparableです。アルファベット順にソートするために独自のComparatorを作成する必要はありません。ソートを呼び出すことができ、アルファベット順(Stringsの自然順)にソートされます。

だから、あなただけ行うことができます。

Collections.sort(yourListHere); 
関連する問題