JUtil

net.cscott.jutil
Class ListFactory<V>

java.lang.Object
  extended by net.cscott.jutil.CollectionFactory<V>
      extended by net.cscott.jutil.ListFactory<V>

public abstract class ListFactory<V>
extends CollectionFactory<V>

ListFactory is a List generator. Subclasses should implement constructions of specific types of Lists. 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.

Version:
$Id: ListFactory.java,v 1.6 2006-10-30 19:58:06 cananian Exp $
Author:
Felix S. Klock II

Constructor Summary
ListFactory()
          Creates a ListFactory.
 
Method Summary
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.
 List<V> makeCollection()
          Generates a new, mutable, empty Collection.
 List<V> makeCollection(Collection<? extends V> c)
          Generates a new, mutable Collection, using the elements of c as a template for its initial contents.
 List<V> makeCollection(int initCapacity)
          Generates a new, mutable, empty Collection, using initialCapacity as a hint to use for the capacity for the produced Collection.
 List<V> makeList()
          Generates a new, mutable, empty List.
abstract  List<V> makeList(Collection<? extends V> c)
          Generates a new mutable List, using the elements of c as a template for its initial contents.
 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.
static
<E> List<E>
singleton(E o)
          Deprecated. Use Collections.singletonList instead.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ListFactory

public ListFactory()
Creates a ListFactory.

Method Detail

makeCollection

public final List<V> makeCollection()
Description copied from class: CollectionFactory
Generates a new, mutable, empty Collection.

Overrides:
makeCollection in class CollectionFactory<V>

makeCollection

public final List<V> makeCollection(int initCapacity)
Description copied from class: CollectionFactory
Generates a new, mutable, empty Collection, using initialCapacity as a hint to use for the capacity for the produced Collection.

Overrides:
makeCollection in class CollectionFactory<V>

makeCollection

public final List<V> makeCollection(Collection<? extends V> c)
Description copied from class: 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 class CollectionFactory<V>

makeList

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


makeList

public 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

public abstract 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

public 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

public static <E> List<E> singleton(E o)
Deprecated. Use Collections.singletonList instead.

Creates and returns an immutable List of one element.
effects: returns the list [ o ]


JUtil

Copyright (c) 2006 C. Scott Ananian