挿入時制限付きコレクション生成の提供を整理することにした。
public interface ListPredicate<E>{
public boolean apply(E e);
}
→ ArrayList 生成に使用する Predicate
public interface MapPredicate<K,V>{
public boolean apply(K k,V v);
}
→ HashMap 生成に使用する Predicate
public interface TreePredicate<E>{
public boolean apply(E e);
}
→ TreeSet,TreeMap 生成に使用する Predicate
E は、Comparable 実装されてることが前提
public interface ComparePredicate<E> extends Comparator{
public boolean apply(E e);
}
→ Comparator 指定のTreeSet,TreeMap 生成に使用する Predicate
Predicate を引数に持つコレクション生成メソッドを提供するクラスを用意
次のようなメソッドを提供することとする。
public static <E> List<E> createArrayList(ListPredicate<E> predicate)
→ 制限付き ArrayList 生成
public static <K,V> Map<K,V> createHashMap(MapPredicate<K,V> predicate)
→ 制限付き HashMap 生成
public static <E> Set<E> createTreeSet(final TreePredicate<E> predicate)
→ 制限付き TreeSet 生成
public static <K,V> Map<K,V> createTreeMap(final TreePredicate<K> predicate)
→ 制限付き TreeMap 生成
public static <E> Set<E> createTreeSet(final ComparePredicate<E> predicate)
→ 制限付き Comparator 指定の TreeSet 生成
public static <K,V> Map<K,V> createTreeMap(final ComparePredicate<K> predicate)
→ 制限付き Comparator 指定の TreeMap 生成