【Java】Comparableインターフェースを実装してListの要素をソートする

自作のオブジェクトクラスを要素にもつListを並べ替える際、
Comparableインターフェースを実装して順序を定義する方法をメモ。

Comparableインターフェースを実装する

自作のオブジェクトクラスPersonクラス

Comparableインターフェースを実装し、compareToメソッドをオーバーライド実装する。
(Comparableインターフェースの型引数<>は同じPerson型にする)

数値型(Integer)型変数で並び替える

Personクラスの数値型メンバー変数ageを対象に、
Integerクラスのcompareメソッドで順序比較する。
(比較するオブジェクトをotherとしている)

Mainクラス

Collectionsクラスのsortメソッドの引数に
Person型のオブジェクトを追加した変数personsを渡してソートする。

実行結果(コンソールに出力):

ソート無し:[id=3, name=Zack, age=32, id=2, name=Andy, age=40, id=1, name=Dave, age=25, id=4, name=Beck, age=17]
ageでソート:[id=4, name=Beck, age=17, id=1, name=Dave, age=25, id=3, name=Zack, age=32, id=2, name=Andy, age=40]

文字列(String)型変数で並び替える

Personクラスのメンバー変数、nameの値で並びを定義する。

StringクラスのcompareToメソッドで変数nameの文字列順序を比較する。

オーバーライドするcompareToメソッドの実装

実行結果(コンソールに出力):

ソート無し:[id=3, name=Zack, age=32, id=2, name=Andy, age=40, id=1, name=Dave, age=25, id=4, name=Beck, age=17]
nameでソート:[id=2, name=Andy, age=40, id=4, name=Beck, age=17, id=1, name=Dave, age=25, id=3, name=Zack, age=32]

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください