挿入時制限付きコレクション(1)

挿入時制限付きコレクション生成の提供を整理することにした。

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 生成