talosのプログラミング教室

Java Gold合格への道 ~ComparableとComparator~

スポンサーリンク

こんにちは。たろすです。

今回はComparableとComparatorについて説明します。

Comparableインタフェース

Comparableとは「比較可能」という意味であり、Comparableインタフェースを実装しているクラスから生成されるオブジェクトと他のオブジェクトを比較可能にします。

Comparableインタフェースを実装しているクラスにはcompareTo()を実装する必要があります。

public class X implements Comparable<X> {
	private int id;

	public int compareTo(X x) {
		return this.id - x.id;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}
}

compareTo()の実装ルールとしては、
自身のほうが比較対象よりも大きい場合は正、
等しい場合は0、
自身のほうが比較対象よりも小さい場合は負の値を返すことになっています。

Comparatorインタフェース

Comparatorとは「比較器」という意味であり、Comparatorインタフェースを実装しているクラスから生成されるオブジェクトは他の二つのオブジェクトを比較することができます。

Comparatorインタフェースを実装しているクラスにはcompare()を実装する必要があります。

public class Y implements Comparator<X> {

	public int compare(X x0, X x1) {
		return x0.getId() - x1.getId();
	}
}

compare()の実装ルールとしては、
引数0のほうが引数1よりも大きい場合は正、
等しい場合は0、
引数0のほうが引数1よりも小さい場合は負の値を返すことになっています。

おわりに

今回はComparableとComparatorについて説明しました。