- ベストアンサー
J2SDK1.42 ArrayList ソート方法とは?
- J2SDK1.42のArrayListを使用してデータをソートする方法について教えてください。
- 年の順にソートしたいデータをArrayListで扱っていますが、どのようなプログラムを組めば良いでしょうか?
- CSV形式の元データを配列に格納してソートや絞り込みができる方法も教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Collections#sortを使えば簡単だと思います。 現状のデータが入ったリストをリストにしても問題なりと思いますが、 簡単に記載する為、Beanのリストで説明します。 new Bean('渡辺',50,'埼玉県'); のgetter/setterのあるBeanを人数分作成してListか何かに詰め込みます。 for (int i=0;i<hoge.length;i++){ list.add(new Bean(hoge[0],hoge[1],hoge[2])); } それで、並び替えを行う為sortメソッドに投げ込みます。 Collections.sort(list,new BeanComparator()); ここで、BeanComparatorが出てきましたが、ここにソートする内容を 記載します。内部クラスなどにしちゃえばOKです。 public class BeanComparator implements Comparator { public int compare(Object arg1, Object arg2) { Bean bean1 = (Bean) arg1; Bean bean2 = (Bean) arg2; return new Integer(bean1.getAge()).compareTo(new Integer(bean2.getAge())); } } こんな感じですね。compareメソッドの引数にリストに登録した内容 が入ってきます、それを取り出しキャストして年(getterをAgeと設定) を比較しています。 これは、昇順にしていますが、降順にする場合は、returnするときに *-1してあげれば大丈夫だと思います。 わからない場合は、 Collections Comparator ソート ぐらいでググれば結構ヒットすると思います。 がんばってください。
お礼
Comparatorについてはすでに調べていたのですが、頭が固いようで… 要素や項目が増えると混乱してしまいました。 非常にわかりやすい回答ありがとうございました。 後は実際に使いながら学んでみます。