Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaでArrayListをソートする方法を徹底解説!sort()とreverse()の使い方

JavaでArrayListを昇順にソートするには、Collections.sort()メソッドを使用します。また、Collections.reverse()メソッドを使うと、ArrayListの要素の順序を逆にすることができます。これらのメソッドを使用するには、java.util.Collectionsパッケージをインポートする必要があります。

JavaでArrayListをソートするには

開発をしていると、ArrayListの要素を昇順や降順で並べ替えたい場面に出くわすことがあります。例えば、生徒名のリストをアルファベット順に並べ替えたい場合などが挙げられます。

そんなときに役立つのが、Collections.sort()メソッドとCollections.reverse()メソッドです。

Collections.sort()メソッドは、ArrayListの要素を昇順にソートするために使用されます。一方、Collections.reverse()メソッドは、リストの要素の順序を逆転させるために使われます。

この記事では、具体的なコード例を交えながら、JavaでArrayListをソートする方法を解説します。ArrayListの基本と、sort()メソッドおよびreverse()メソッドの構文についても見ていきましょう。

JavaのArrayListとは

JavaのArrayListクラスは、サイズが可変の配列(動的配列)を作成できるクラスです。ArrayListはListインターフェースの実装であり、ListインターフェースはJavaでリストを作成するために使用されます。そのため、ArrayListクラスでは、データの操作や取得に使われる多数のListメソッドを利用できます。

sort()メソッドでArrayListをソートする

JavaのCollectionsパッケージには、コレクションの中身を操作するためのさまざまなメソッドが用意されています。JavaにおいてArrayListはコレクションの一種であるため、CollectionsパッケージのメソッドをArrayListに対して使用できます。

Collectionsパッケージには、sort()というメソッドが含まれています。このメソッドは、コレクションを昇順にソートするために使用されます。

sort()メソッドを使用する前に、まずCollectionsパッケージをインポートする必要があります。以下のコードでインポートできます。

import java.util.Collections;

Collectionsパッケージをインポートしたら、sort()を使用できるようになります。sort()メソッドの構文は以下の通りです。

Collections.sort(listName);

sort()メソッドは1つの引数を受け取ります。それは、ソートしたいリストの名前です。このメソッドは自動的にリストを昇順に並べ替えます。

sort()メソッドの使用例

ここで、小学校のあるクラスの生徒名のリストがあり、それをアルファベット順に並べ替えたいとします。以下のJavaプログラムは、ソートされていないリストをソートします。

import java.util.ArrayList;
import java.util.Collections;

class Main {
	public static void main(String[] args) {
		ArrayList<String> students = new ArrayList<>();

		students.add("Lindsay");
		students.add("Peter");
		students.add("Lucas");
		students.add("Athena");

		System.out.println("Student list: " + students);

		Collections.sort(students);
		System.out.println("Sorted student list: " + students);
	}
}

このコードを実行すると、次の出力が得られます。

Student list: [Peter, Lindsay, Lucas, Athena]
Sorted student list: [Athena, Lindsay, Lucas, Peter]

コードの内容を分解して見ていきましょう。まず、コード全体で使用するArrayListパッケージとCollectionsパッケージをインポートします。次に、メインプログラムのコードを格納するMainというクラスを宣言します。

mainメソッド内では、以下の手順を実行しています。

  1. studentsというJava変数を宣言します。
  2. 次に、生徒名をArrayListに追加します。
  3. 「Student list:」というメッセージに続けて、ソート前の生徒名リストをコンソールに出力します。
  4. Collections.sort()が自然順序付けの操作を実行し、リストをソートします。
  5. 「Sorted student list:」というメッセージに続けて、新しくソートされた生徒名リストをコンソールに出力します。

なお、Collections.sort()は既存のリストの順序を直接変更することに注意してください。上記の例では、Collections.sort()メソッドを実行すると、既存の生徒名リストの順序がそのまま変更されました。新しいソート済みリストが別途作成されるわけではありません。

reverse()メソッドで降順にソートする

Collections.reverse()メソッドは、ArrayListの要素の順序を逆にします。reverse()メソッドは1つの引数を受け取ります。それは、順序を逆にしたいリストです。

reverse()メソッドの構文は以下の通りです。

Collections.reverse(list)

「list」には、順序を逆にしたいArrayListを指定します。

reverse()メソッドはArrayListの項目の順序を単純に逆転させるだけなので、降順にソートしたい場合は、まずリストを昇順にソートしておく必要があります。その後、reverse()を使って項目の順序を逆にします。Collections.sort()とreverse()を組み合わせることで、リストを降順にソートできます。

reverse()メソッドの使用例

先ほどの生徒名リストを降順(アルファベットの逆順)に並べ替えたいとしましょう。これは、以下のコードで実現できます。

import java.util.ArrayList;
import java.util.Collections;

class Main {
	public static void main(String[] args) {
		ArrayList<String> students = new ArrayList<>();

		students.add("Lindsay");
		students.add("Peter");
		students.add("Lucas");
		students.add("Athena");

		System.out.println("Student list: " + students);

		Collections.sort(students);
		Collections.reverse(students);
		System.out.println("Sorted student list: " + students);
	}
}

このコードを実行すると、次の出力が得られます。

Student list: [Lindsay, Peter, Lucas, Athena]
Sorted student list: [Peter, Lucas, Lindsay, Athena]

まず、リストをアルファベット順にソートします。その後、リスト内の項目の順序を逆にすることで、アルファベットの逆順に表示されます。Collections.sort()でstudentsリストをソートした後、Collections.reverse()を使ってリスト内の項目の順序を逆にしているのです。

まとめ

JavaのCollections.sort()メソッドは、ArrayListを昇順にソートします。Collections.reverse()メソッドは、ArrayListの項目の順序を逆にします。この2つのメソッドを組み合わせて使うことで、ArrayListの項目を降順にソートすることも可能です。

JavaでのArrayListの使い方については、まだ学ぶべきことがたくさんあります。さらに詳しく知りたい方は、以下のチュートリアルも参考にしてください。

  • ArrayListから配列への変換方法
  • ArrayListの初期化方法
  • ArrayListのソート方法

Javaプログラミングについてさらに学びたい方は、Java学習ガイドもぜひご覧ください。

  1. JavaでJSONArrayをソートする方法をわかりやすく解説

    JSON(JavaScript Object Notation)は、広く利用されているデータ交換フォーマットの一つです。軽量であり、特定のプログラミング言語に依存しないという特徴を持っています。 JSONArrayは、文字列からテキストを解析してベクターのようなオブジェクトを生成できるクラスで、java.util.Listインターフェースをサポートしています。この記事では、JSONArrayに格納されたJSONObjectを、指定したキーを基準にソートする方法を紹介します。 ソートの基本的な流れ JSONArray自体には直接ソートする機能がないため、以下の手順でソートを行います。 JSON

  2. JavaでのArrayListとHashSetの違いを徹底解説!使い分けのポイントも紹介

    HashSetとArrayListは、どちらもJavaコレクションフレームワークにおいて最も重要なクラスの一つです。それぞれ特徴が異なるため、用途に応じた適切な使い分けが求められます。本記事では、ArrayListとHashSetの主な違いを6つの観点から比較し、実際のサンプルコードとともにわかりやすく解説します。ArrayListとHashSetの違い一覧No.項目ArrayListHashSet1実装インターフェースListインターフェースを実装しています。Setインターフェースを実装しています。2内部構造内部的には配列(動的配列)を使って実装されています。内部的にはHashMapを使って