Arrays クラスで昇順でソートする方法のように、配列を降順でソートする簡単な方法はありますか?
それとも、怠け者になるのをやめて、自分でこれを行う必要がありますか :[
Arrays クラスで昇順でソートする方法のように、配列を降順でソートする簡単な方法はありますか?
それとも、怠け者になるのをやめて、自分でこれを行う必要がありますか :[
これを使用して、あらゆる種類のオブジェクトを並べ替えることができます
sort(T[] a, Comparator<? super T> c)
Arrays.sort(a, Collections.reverseOrder());
Arrays.sort()
プリミティブ配列を降順でソートするために直接使用することはできません。Arrays.sort()
で定義されたリバース Comparator を渡してメソッドを呼び出そうとするとCollections.reverseOrder()
、エラーがスローされます。
sort(int[],comparator) に適したメソッドが見つかりません
これは、整数配列などの「オブジェクトの配列」では正常に機能しますが、int 配列などのプリミティブ配列では機能しません。
プリミティブ配列を降順で並べ替える唯一の方法は、まず配列を昇順で並べ替えてから、配列を元の位置に戻すことです。これは、2 次元プリミティブ配列にも当てはまります。
あなたはこれを使うことができます:
Arrays.sort(data, Collections.reverseOrder());
Collections.reverseOrder()
Comparator
逆自然順序を使用してを返します。を使用して、独自のコンパレータの反転バージョンを取得できますCollections.reverseOrder(myComparator)
。
代替案は(数字の場合!!!)
文字通り話された:
array = -Arrays.sort(-array)
まず、次を使用して配列をソートする必要があります。
Collections.sort(myArray);
次に、次を使用して昇順から降順に順序を逆にする必要があります。
Collections.reverse(myArray);
プリミティブの要素を含む配列の場合、org.apache.commons.lang(3)
(並べ替え後に) 配列を逆にする簡単な方法がある場合は、次を使用します。
ArrayUtils.reverse(array);
あなたのユースケースが何であったかはわかりませんが、ここでの他の回答に加えて、別の(怠惰な)オプションは、あなたが示すように昇順で並べ替えますが、代わりに逆の順序で反復することです。
ここでは多くの混乱が起こっています - 人々は非プリミティブ値の解決策を提案し、地面からいくつかのソートアルゴリズムを実装しようとし、追加のライブラリを含む解決策を提供し、いくつかのハックなものを披露します.元の質問に対する答えは50です. /50。コピー/貼り付けだけしたい人向け:
// our initial int[] array containing primitives
int[] arrOfPrimitives = new int[]{1,2,3,4,5,6};
// we have to convert it into array of Objects, using java's boxing
Integer[] arrOfObjects = new Integer[arrOfPrimitives.length];
for (int i = 0; i < arrOfPrimitives.length; i++)
arrOfObjects[i] = new Integer(arrOfPrimitives[i]);
// now when we have an array of Objects we can use that nice built-in method
Arrays.sort(arrOfObjects, Collections.reverseOrder());
arrOfObjects
{6,5,4,3,2,1}
今です。int 以外の配列がある場合は、代わりに対応するオブジェクトInteger
を使用します。
public double[] sortArrayAlgorithm(double[] array) { //sort in descending order
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length; j++) {
if (array[i] >= array[j]) {
double x = array[i];
array[i] = array[j];
array[j] = x;
}
}
}
return array;
}
このメソッドを使用して double 型の配列を降順で並べ替えます。「戻り値の型」、「引数の型」を変更するだけで、他の型 (int、float など) の配列を並べ替えることができます。変数「x」型を対応する型に変換します。if 条件で ">=" を "<=" に変更して昇順にすることもできます。