This abstract class is a partial implementation of the List interface that makes it easy to define custom List implementations based on random-access list elements (such as objects stored in an array). If you want to base a List implementation on a sequential-access data model (such as a linked list), subclass AbstractSequentialList instead.To create an unmodifiable List, simply subclass AbstractList and override the (inherited) size( ) and get( ) methods. To create a modifiable list, you must also override set( ) and, optionally, add( ) and remove( ). These three methods are optional, so unless you override them, they simply throw an UnsupportedOperationException. All other methods of the List interface are implemented in terms of size( ), get( ), set( ), add( ), and remove( ). In some cases, you may want to override these other methods to improve performance. By convention, all List implementations should define two constructors: one that accepts no arguments and another that accepts a Collection of initial elements for the list.
Figure 16-2. java.util.AbstractList<E>
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> { // Protected Constructors protected AbstractList ( ); // Methods Implementing List public boolean add (E o ); public void add (int index , E element ); public boolean addAll (int index , Collection<? extends E> c ); public void clear ( ); public boolean equals (Object o ); public abstract E get (int index ); public int hashCode ( ); public int indexOf (Object o ); public Iterator<E> iterator ( ); public int lastIndexOf (Object o ); public ListIterator<E> listIterator ( ); public ListIterator<E> listIterator (int index ); public E remove (int index ); public E set (int index , E element ); public List<E> subList (int fromIndex , int toIndex ); // Protected Instance Methods protected void removeRange (int fromIndex , int toIndex ); // Protected Instance Fields protected transient int modCount ; }
Subclasses AbstractSequentialList, ArrayList, Vector |