This abstract class is a partial implementation of Collection that makes it easy to define custom Collection implementations . To create an unmodifiable collection, simply override size ( ) and iterator( ) . The Iterator object returned by iterator( ) has to support only the hasNext( ) and next ( ) methods . To define a modifiable collection, you must additionally override the add( ) method of AbstractCollection and make sure the Iterator returned by iterator( ) supports the remove( ) method. Some subclasses may choose to override other methods to tune performance. In addition, it is conventional that all subclasses provide two constructors: one that takes no arguments and one that accepts a Collection argument that specifies the initial contents of the collection. Note that if you subclass AbstractCollection directly, you are implementing a bag an unordered collection that allows duplicate elements. If your add( ) method rejects duplicate elements, you should subclass AbstractSet instead. See also AbstractList . Figure 16-1. java.util.AbstractCollection<E>public abstract class AbstractCollection<E> implements Collection<E> { // Protected Constructors protected AbstractCollection ( ); // Methods Implementing Collection public boolean add (E o ); public boolean addAll (Collection<? extends E> c ); public void clear ( ); public boolean contains (Object o ); public boolean containsAll (Collection<?> c ); public boolean isEmpty ( ); public abstract Iterator<E> iterator ( ); public boolean remove (Object o ); public boolean removeAll (Collection<?> c ); public boolean retainAll (Collection<?> c ); public abstract int size ( ); public Object[ ] toArray ( ); public <T> T[ ] toArray (T[ ] a ); // Public Methods Overriding Object public String toString ( ); } SubclassesAbstractList , AbstractQueue , AbstractSet |