Interface ListFactory<V>

All Superinterfaces:
CollectionFactory<V>
Functional Interface:
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface public interface ListFactory<V> extends CollectionFactory<V>
ListFactory is a List generator. Implementations construct specific types of Lists. It is a functional interface, so a constructor which copies a collection is a ListFactory: ArrayList::new. ListFactory also has a set of static helper methods for building List objects.

Note also that the current limitations on parametric types in Java mean that we can't easily type this class as ListFactory<L extends List<V>,V>, as ListFactory<LinkedList<V>,V> is not a subtype of ListFactory<List<V>,V>, even though LinkedList is a subtype of List.

Author:
Felix S. Klock II <pnkfelix@mit.edu>
  • Method Details

    • makeCollection

      default List<V> makeCollection()
      Description copied from interface: CollectionFactory
      Generates a new, mutable, empty Collection.
      Specified by:
      makeCollection in interface CollectionFactory<V>
    • makeCollection

      default List<V> makeCollection(int initCapacity)
      Description copied from interface: CollectionFactory
      Generates a new, mutable, empty Collection, using initialCapacity as a hint to use for the capacity for the produced Collection.
      Specified by:
      makeCollection in interface CollectionFactory<V>
    • makeCollection

      default List<V> makeCollection(Collection<? extends V> c)
      Description copied from interface: CollectionFactory
      Generates a new, mutable Collection, using the elements of c as a template for its initial contents. Note that the Collection returned is not a view of c, but rather a snapshot; changes to c are not reflected in the returned Collection.
      Specified by:
      makeCollection in interface CollectionFactory<V>
    • makeList

      default List<V> makeList()
      Generates a new, mutable, empty List.
    • makeList

      default List<V> makeList(int initialCapacity)
      Generates a new, mutable, empty List, using initialCapacity as a hint to use for the capacity for the produced List.
    • makeList

      List<V> makeList(Collection<? extends V> c)
      Generates a new mutable List, using the elements of c as a template for its initial contents.
    • concatenate

      static <E> List<E> concatenate(List<List<E>> lists)
      Creates and returns an unmodifiable List view of the list made from connecting lists together in order.
      requires: lists is a List of Lists.
      effects:
      let l0 = (List) lists.get(0)
                       l1 = (List) lists.get(1)
                       ...
                       ln = (List) lists.get(n) where n is lists.size()-1
                   returns a list view
                       [ l0.get(0) , l0.get(1), ... , l0.get(l0.size()-1), 
                         l1.get(0) , l1.get(1), ... , l1.get(l1.size()-1),
                         ...
                         ln.get(0) , ln.get(1), ... , ln.get(ln.size()-1) ]
              
      Note that not only changes to the elements of lists are reflected in the returned List, but even changes to lists itself (adding or removing lists) are also reflected.
    • singleton

      @Deprecated(since="1.3") static <E> List<E> singleton(E o)
      Deprecated.
      Creates and returns an immutable List of one element.
      effects: returns the list [ o ]