次のコードを使用して、Javaで配列を降順で並べ替えようとしています。
for(int i = 0; i < arr.length; i++) {
Comparator comparator = Collections.reverseOrder();
Arrays.sort(arr,comparator);
}
しかし、私はこのエラーを受け取ります:
配列型のメソッドsort(int [])は、引数(int []、Comparator)には適用できません。
配列のjavadocを見ると、2番目のパラメータとしてaをとる唯一のsort
メソッドが次のようになっていることがわかります。comparator
sort(T[] a, Comparator<? super T> c)
sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c)
あなたの場合、int[]
はT[]
(Integer[]
そうなるでしょう)ではないので、それらのメソッドを適用することはできません。
(少なくとも)2つのオプションがあります:
Integer[]
上記の方法を使用しますループしようとしている理由は明らかではありませんが、プリミティブ配列Arrays.sort
で動作するメソッドでは、カスタムコンパレータを指定できません。
最も簡単なアプローチは、配列を並べ替えてから逆にすることです。reverse
時間がかかる方法をすぐに見つけることはできませんがint[]
、独自の方法を書くのは簡単です。
Arrays.sort(arr,comparator);
プリミティブでは機能しません。オブジェクトのarr
配列である必要があります。
Arraysクラスのコンパレータを受け入れる唯一のソートメソッドでは、オブジェクト配列を指定する必要があります。クラス内にsort(int []、Comparator)のシグネチャを持つメソッドはありません
配列の定義中にintIntegerを変更します。これに変更int arr[]={};
するInteger arr[]={};
と、コードが実行されます