java.lang.Comparableもありますよ
Javaで文字列ソートを行う方法
- Collections.sortを使う
- TreeSetを使う
- Arrays.sort + Comparatorを使う
Comparableを使用する方法もあるので紹介します。
あおうささんの日記のJoSQLを使用したサンプルを少し改造しました。
package sample; public class Bean implements Comparable<Bean> { private String value; public String getValue() { return value; } public void setValue(String value) { this.value = value; } @Override public int compareTo(Bean bean) { return value.compareTo(bean.value); } @Override public String toString() { return value; } }
実行はこちら
public static void main(String[] args) { Set<Bean> set = new TreeSet<Bean>(); Bean bean1 = new Bean(); bean1.setValue("x"); Bean bean2 = new Bean(); bean2.setValue("z"); Bean bean3 = new Bean(); bean3.setValue("1"); Bean bean4 = new Bean(); bean4.setValue("2"); set.add(bean1); set.add(bean2); set.add(bean3); set.add(bean4); System.out.println(set); }
Comparableの場合、Beanのようなクラスに対して比較処理を書くことができるので、TreeSetなどをそのまましよう可能です。Comparatorとの違いは、比較のロジックを外部に持つ(Comparator)のか、内部つまりクラス自身に持つ(Comparable)もつのかの違いです。
あと、ここでは実装しませんでしたが、Comparableを実装するような場合は、equalsやhasocodeなどもオーバーライドした方がよいのだと思います。