ただ、ストレスなく生きたいだけのITエンジニアのブログ -- 弱小エンジニア脱却への道
【初心者向け】javaのsortメソッドの使い方

こんにちは!ISAMU(@burlesca_isa)です!

今回の対象読者は

  • sortメソッドを使ってみたい方

sortメソッドの使い方

ArrayListはsortメソッドを使用してソートすることができます。

sortメソッドには引数にコンパレータというものを使用します。

コンパレータとは並び替えに使う比較するメソッドを持っているオブジェクトです。

コンパレータはインターフェースを使用します。

2種類あり、それぞれソートの対象が異なります。

  • Comparator・・・任意のクラスが対象
  • Comparable・・・自分自身が対象

Comparatorはオブジェクトを作成して引数に渡して使い、
Comparableはソートしたいクラスに実装して使用します。

Comparatorの使い方

Comparatorインターフェースを実装したクラスからインスタンスを作成し、
sortメソッドに渡して使用します。

Comparatorインターフェースはcompareメソッドが定義されています。
compareメソッドをオーバライドしてソート方法を記述します。

インスタンスの作成方法は2つあります。

  • Comparatorインターフェースを実装したクラスからインスタンスを作成
  • ラムダ式を使用してインスタンスを作成

ここではラムダ式を使用したインスタンスの作成方法を説明します。

Comparatorサンプルプログラム

実行結果

Member [name=井上, age=52] Member [name=佐藤, age=22] Member [name=田中, age=44] ========================
Member [name=佐藤, age=22] Member [name=田中, age=44] Member [name=井上, age=52]

Memberクラスのインスタンスが格納されたリストを作成します。

Comparatorのインスタンスは2種類作成しています。

  • Memberクラスの名前(name)を昇順でソート
  • Memberクラスの年齢(age)を昇順でソート

Comparatorは総称型です。
今回はMember型のインスタンスをソートしたいのでMemberと記述しています。

名前(文字列)の比較にはStringクラスのcompareToメソッドを使用しています。
年齢(数値)の比較にはIntegerクラスのcompareメソッドを使用しています。

これらは決まり文句として暗記しましょう。

Comparableの使い方

Comparableインターフェースを実装し、compareToメソッドをオーバライドして使用します。

オーバライドは、
基本的にはthisを使用した自分自身と引数のオブジェクトから取得した値で比較します。

Comparableサンプルプログラム

実行結果

Member_1 [name=井上, age=52] Member_1 [name=佐藤, age=22] Member_1 [name=田中, age=44]

Collectionsクラスのsortメソッドを使用してソートしています。

【初心者向け】javaのsortメソッドの使い方
最新情報をチェックしよう!