ジェネリックスって便利だな
最近(ようやく!)、Javaジェネリックスの便利さに気づきつつある。
以下、お手製ユーティリティクラス
public class CollectionUtils { public static interface Selecter<T>{ public boolean select(T element); } public static<T> List<T> select(List<T> list, Selecter<T> selecter){ List<T> result = new ArrayList<T>(); for (T t : list) { if(selecter.select(t)){ result.add(t); } } return result; } }
(実装的にはArrayListのインスタンスを返すんじゃなくて、該当するものremoveでもいいんだけど、自分用途ではこれでOKでしたということで)
これを呼び出す例
List<String> values = ...; values = CollectionUtils.select(values, new Selecter<String>(){ @Override public boolean select(String value) { return value.length() > 0; }});
共通化できる部分を共通化せず、「自作クラスのリストから、ある条件のものを選択する」処理とか無数に書き散らしてきた。アホだった。
でも、何だかみんなが使うコレクションのユーティリティーライブラリみたいなのあってもよさそうなんだけど。Commons Collectionみたいな。ていうかJDKの新し目のAPIにあったりして。