4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JavaのCollections.sort()使っての並べ替え(昇順、降順)

Last updated at Posted at 2022-02-23

#目次

  • この記事を作成したきっかけ
  • 実際に作ってみる

#この記事を作成したきっかけ
Javaのソースコードの修正時、ソート処理に悩んだので今回の記事を作成した

#実際に作ってみる
###昇順

並べ替えるListを用意
//数値のリストを用意
List<Integer> list = new ArrayList<Integer>();
Random r = new Random();

for(int i = 0; i < 10; i++) {
	//0~99までの数値をランダムに設定
	list.add(r.nextInt(100));
}

System.out.println("ソート前:");

//リストを表示する
for(int i = 0; i < 10; i++) {
	System.out.print("[" + list.get(i) + "] ");
}
昇順にソートする
//昇順にソートする
Collections.sort(list);

System.out.println("\nソート後(昇順):");

//リストを表示する
for(int i = 0; i < 10; i++) {
	System.out.print("[" + list.get(i) + "] ");
}
実行結果
ソート前:
[82] [79] [38] [63] [30] [65] [89] [97] [59] [68] 
ソート後(昇順):
[30] [38] [59] [63] [65] [68] [79] [82] [89] [97]

###降順
次に、降順に並び替える
通常、Collections.sort()は昇順でソートが行われる

降順でソートされるように、以下を実施する。

  • Comparatorをimplements(継承)したクラスNumberDescendingSortを作成
  • compareメソッドをオーバーライドする
  • o1 > o2 の場合は正の数が返される(return 1;) → 負の数が返されるようにする(return -1;)
  • o1 < o2の場合は負の数が返される(return -1;) → 正の数が返されるようにする(return 1;)
降順でソートされるよう定義する
package sort;

import java.util.Comparator;

public class NumberDescendingSort implements Comparator<Integer>{
	//通常は、o1 > o2 の場合は正の数が返され(return 1;)、 o1 < o2の場合は負の数が返される(return -1;)
	//昇順がデフォルトなので、小さい順に並べられる。
	//今回は降順としたいので、返される値を逆にしている。
	//o1 > o2 の場合は負の数が返され(return -1;)、 o1 < o2の場合は正の数が返される(return 1;)
	@Override
	public int compare(Integer o1, Integer o2) {
		//
		if(o1 > o2) {
			return -1;
		}else if(o1 < o2) {
			return 1;
		}else {
			return 0;
		}
	}

}
降順にソートする
//降順にソートする(NumberDescendingSortクラスを使用する)
//第一引数のリストを、第二引数で定義している通りに並び変える
Collections.sort(list,new NumberDescendingSort());

System.out.println("\nソート後(降順):");

for(int i = 0; i < 10; i++) {
	System.out.print("[" + list.get(i) + "] ");
}
実行結果
ソート前:
[82] [79] [38] [63] [30] [65] [89] [97] [59] [68] 
ソート後(降順):
[97] [89] [82] [79] [68] [65] [63] [59] [38] [30] 

#最後に
ソートの処理を修正時に、昇順降順の条件に迷ってしまっていたが、
今回実際に作ってみて理解を深めることができました。

4
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?