読者です 読者をやめる 読者になる 読者になる

Javaと情熱のあいだ

Play Frameworkはじめました

Listに格納されたBeanをソートするサンプル

Listに格納されたBeanをソートする場合はComparator.compareを実装したクラスを作って
Collections.sortを実行すればできるが、作る手間を省くために
org.apache.commons.beanutils.BeanComparatorを利用する。
BeanComparatorでソートしたいメンバ名を指定すると昇順にソートされる。
ReverseComparatorをオマケとして渡すと降順にソートされる。

/**
 *
 * 実行。
 * @throws Exception 例外
 */
public void execute() throws Exception {

    final List<TestBean> list = new ArrayList<TestBean>();

    while (list.size() < 100) {
        list.add(new TestBean(RandomUtils.nextInt(100)));
    }

    System.out.println("昇順");

    Collections.sort(list, new BeanComparator("hoge"));

    for (final TestBean tb : list) {
        System.out.println(ToStringBuilder.reflectionToString(
                tb, ToStringStyle.SHORT_PREFIX_STYLE));
    }

    System.out.println("降順");

    Collections.sort(list
            , new BeanComparator("hoge", new ReverseComparator()));

    for (final TestBean tb : list) {
        System.out.println(ToStringBuilder.reflectionToString(
                tb, ToStringStyle.SHORT_PREFIX_STYLE));
    }
}

/**
 *
 * <HR>
 * <P>
 *  ■モジュール名 <BR>
 * <BLOCKQUOTE>
 *      Test.java <BR>
 * </BLOCKQUOTE>
 * <P>
 *  ■クラス仕様 <BR>
 * <BLOCKQUOTE>
 *      TestクラスはBeanクラスです。<BR>
 * </BLOCKQUOTE>
 * <P>
 * <HR>
 * <P>
 */
public class TestBean {

    /**
     * 確認用数値
     */
    private int hoge;

    /**
     *
     * コンストラクタ
     * @param hoge 確認用数値
     */
    public TestBean(final int hoge) {
        this.hoge = hoge;
    }

    /**
     *
     * 確認用数値の取得
     * @return 確認用数値
     */
    public int getHoge() {
        return hoge;
    }

    /**
     *
     * 確認用数値の設定
     * @param hoge 確認用数値
     */
    public void setHoge(final int hoge) {
        this.hoge = hoge;
    }

}