3

次のコードを使用して、Javaで配列を降順で並べ替えようとしています。

for(int i = 0; i < arr.length; i++) {
   Comparator comparator = Collections.reverseOrder();
   Arrays.sort(arr,comparator);
}

しかし、私はこのエラーを受け取ります:

配列型のメソッドsort(int [])は、引数(int []、Comparator)には適用できません。

4

5 に答える 5

9

配列の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つのオプションがあります:

于 2012-09-29T17:04:34.873 に答える
1

ループしようとしている理由は明らかではありませんが、プリミティブ配列Arrays.sortで動作するメソッドでは、カスタムコンパレータを指定できません。

最も簡単なアプローチは、配列を並べ替えてから逆にすることです。reverse時間がかかる方法をすぐに見つけることはできませんがint[]、独自の方法を書くのは簡単です。

于 2012-09-29T17:04:25.000 に答える
0

Arrays.sort(arr,comparator);プリミティブでは機能しません。オブジェクトのarr配列である必要があります。

于 2012-09-29T17:05:51.053 に答える
0

Arraysクラスのコンパレータを受け入れる唯一のソートメソッドでは、オブジェクト配列を指定する必要があります。クラス内にsort(int []、Comparator)のシグネチャを持つメソッドはありません

于 2012-09-29T17:07:23.593 に答える
0

配列の定義中にintIntegerを変更します。これに変更int arr[]={};するInteger arr[]={}; と、コードが実行されます

于 2021-12-07T14:20:26.450 に答える