Class CheckedArrayList<E>

  • Type Parameters:
    E - The type of elements in the list.
    All Implemented Interfaces:
    Serializable, Cloneable, Iterable<E>, Collection<E>, List<E>, RandomAccess, Cloneable, CheckedCollection<E>
    Direct Known Subclasses:
    XPathUtil.StepList

    public class CheckedArrayList<E>
    extends ArrayList<E>
    implements CheckedCollection<E>, Cloneable
    A checked and synchronized List. Type checks are performed at run-time in addition of compile-time checks. The synchronization lock can be modified at runtime by overriding the getLock() method.

    This class is similar to using the wrappers provided in Collections, minus the cost of indirection levels and with the addition of overrideable methods.

    Since:
    2.1
    Author:
    Jody Garnett (Refractions Research), Martin Desruisseaux (IRD)
    See Also:
    Collections.checkedList(java.util.List<E>, java.lang.Class<E>), Collections.synchronizedList(java.util.List<T>), Serialized Form
    • Field Summary

      • Fields inherited from class AbstractList

        modCount
    • Constructor Summary

      Constructors 
      Constructor Description
      CheckedArrayList​(Class<E> type)
      Constructs a list of the specified type.
      CheckedArrayList​(Class<E> type, int capacity)
      Constructs a list of the specified type and initial capacity.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(int index, E element)
      Inserts the specified element at the specified position in this list.
      boolean add​(E element)
      Appends the specified element to the end of this list.
      boolean addAll​(int index, Collection<? extends E> collection)
      Inserts all of the elements in the specified collection into this list, starting at the specified position.
      boolean addAll​(Collection<? extends E> collection)
      Appends all of the elements in the specified collection to the end of this list, in the order that they are returned by the specified Collection's Iterator.
      protected void checkWritePermission()
      Checks if changes in this collection are allowed.
      void clear()
      Removes all of the elements from this list.
      CheckedArrayList<E> clone()
      Returns a shallow copy of this list.
      boolean contains​(Object o)
      Returns true if this list contains the specified element.
      void ensureCapacity​(int minCapacity)
      Increases the capacity, if necessary, to ensure that it can hold the given number of elements.
      protected void ensureValidType​(E element)
      Checks the type of the specified object.
      boolean equals​(Object o)
      Compares the specified object with this list for equality.
      E get​(int index)
      Returns the element at the specified position in this list.
      Class<E> getElementType()
      Returns the element type given at construction time.
      protected Object getLock()
      Returns the synchronization lock.
      int hashCode()
      Returns the hash code value for this list.
      int indexOf​(Object o)
      Returns the index of the first occurrence of the specified element in this list, or -1 if none.
      boolean isEmpty()
      Returns true if this list contains no elements.
      Iterator<E> iterator()
      Returns an iterator over the elements in this list.
      int lastIndexOf​(Object o)
      Returns the index of the last occurrence of the specified element in this list, or -1 if none.
      E remove​(int index)
      Removes the element at the specified position in this list.
      boolean remove​(Object o)
      Removes the first occurrence of the specified element from this list.
      boolean removeAll​(Collection<?> c)
      Removes all of this list's elements that are also contained in the specified collection.
      boolean retainAll​(Collection<?> c)
      Retains only the elements in this list that are contained in the specified collection.
      E set​(int index, E element)
      Replaces the element at the specified position in this list with the specified element.
      int size()
      Returns the number of elements in this list.
      Object[] toArray()
      Returns an array containing all of the elements in this list.
      <T> T[] toArray​(T[] a)
      Returns an array containing all of the elements in this list in proper sequence.
      String toString()
      Returns a string representation of this list.
      void trimToSize()
      Trims the capacity to the list's current size.
      • Methods inherited from class ArrayList

        forEach, listIterator, listIterator, removeIf, removeRange, replaceAll, sort, spliterator, subList
      • Methods inherited from class AbstractCollection

        containsAll
      • Methods inherited from class Object

        finalize, getClass, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface Collection

        parallelStream, removeIf, stream, toArray
      • Methods inherited from interface Iterable

        forEach
      • Methods inherited from interface List

        containsAll
    • Constructor Detail

      • CheckedArrayList

        public CheckedArrayList​(Class<E> type)
        Constructs a list of the specified type.
        Parameters:
        type - The element type (should not be null).
      • CheckedArrayList

        public CheckedArrayList​(Class<E> type,
                                int capacity)
        Constructs a list of the specified type and initial capacity.
        Parameters:
        type - The element type (should not be null).
        capacity - The initial capacity.
        Since:
        2.4
    • Method Detail

      • getElementType

        public Class<E> getElementType()
        Returns the element type given at construction time.
        Specified by:
        getElementType in interface CheckedCollection<E>
        Returns:
        The element type.
        Since:
        2.4
      • ensureValidType

        protected void ensureValidType​(E element)
                                throws IllegalArgumentException
        Checks the type of the specified object. The default implementation ensure that the object is assignable to the type specified at construction time.
        Parameters:
        element - the object to check, or null.
        Throws:
        IllegalArgumentException - if the specified element is not of the expected type.
      • checkWritePermission

        protected void checkWritePermission()
                                     throws UnsupportedOperationException
        Checks if changes in this collection are allowed. This method is automatically invoked after this collection got the lock and before any operation that may change the content. The default implementation does nothing (i.e. this collection is modifiable). Subclasses should override this method if they want to control write access.
        Throws:
        UnsupportedOperationException - if this collection is unmodifiable.
        Since:
        2.5
      • getLock

        protected Object getLock()
        Returns the synchronization lock. The default implementation returns this. Subclasses that override this method should be careful to update the lock reference when this list is cloned.
        Returns:
        The synchronization lock.
        Since:
        2.5
      • iterator

        public Iterator<E> iterator()
        Returns an iterator over the elements in this list.
        Specified by:
        iterator in interface Collection<E>
        Specified by:
        iterator in interface Iterable<E>
        Specified by:
        iterator in interface List<E>
        Overrides:
        iterator in class ArrayList<E>
      • size

        public int size()
        Returns the number of elements in this list.
        Specified by:
        size in interface Collection<E>
        Specified by:
        size in interface List<E>
        Overrides:
        size in class ArrayList<E>
      • isEmpty

        public boolean isEmpty()
        Returns true if this list contains no elements.
        Specified by:
        isEmpty in interface Collection<E>
        Specified by:
        isEmpty in interface List<E>
        Overrides:
        isEmpty in class ArrayList<E>
      • contains

        public boolean contains​(Object o)
        Returns true if this list contains the specified element.
        Specified by:
        contains in interface Collection<E>
        Specified by:
        contains in interface List<E>
        Overrides:
        contains in class ArrayList<E>
      • indexOf

        public int indexOf​(Object o)
        Returns the index of the first occurrence of the specified element in this list, or -1 if none.
        Specified by:
        indexOf in interface List<E>
        Overrides:
        indexOf in class ArrayList<E>
      • lastIndexOf

        public int lastIndexOf​(Object o)
        Returns the index of the last occurrence of the specified element in this list, or -1 if none.
        Specified by:
        lastIndexOf in interface List<E>
        Overrides:
        lastIndexOf in class ArrayList<E>
      • get

        public E get​(int index)
        Returns the element at the specified position in this list.
        Specified by:
        get in interface List<E>
        Overrides:
        get in class ArrayList<E>
      • set

        public E set​(int index,
                     E element)
              throws IllegalArgumentException,
                     UnsupportedOperationException
        Replaces the element at the specified position in this list with the specified element.
        Specified by:
        set in interface List<E>
        Overrides:
        set in class ArrayList<E>
        Parameters:
        index - index of element to replace.
        element - element to be stored at the specified position.
        Returns:
        the element previously at the specified position.
        Throws:
        IndexOutOfBoundsException - if index out of range.
        IllegalArgumentException - if the specified element is not of the expected type.
        UnsupportedOperationException - if this collection is unmodifiable.
      • add

        public boolean add​(E element)
                    throws IllegalArgumentException,
                           UnsupportedOperationException
        Appends the specified element to the end of this list.
        Specified by:
        add in interface Collection<E>
        Specified by:
        add in interface List<E>
        Overrides:
        add in class ArrayList<E>
        Parameters:
        element - element to be appended to this list.
        Returns:
        always true.
        Throws:
        IllegalArgumentException - if the specified element is not of the expected type.
        UnsupportedOperationException - if this collection is unmodifiable.
      • add

        public void add​(int index,
                        E element)
                 throws IllegalArgumentException,
                        UnsupportedOperationException
        Inserts the specified element at the specified position in this list.
        Specified by:
        add in interface List<E>
        Overrides:
        add in class ArrayList<E>
        Parameters:
        index - index at which the specified element is to be inserted.
        element - element to be inserted.
        Throws:
        IndexOutOfBoundsException - if index out of range.
        IllegalArgumentException - if the specified element is not of the expected type.
        UnsupportedOperationException - if this collection is unmodifiable.
      • addAll

        public boolean addAll​(Collection<? extends E> collection)
                       throws IllegalArgumentException,
                              UnsupportedOperationException
        Appends all of the elements in the specified collection to the end of this list, in the order that they are returned by the specified Collection's Iterator.
        Specified by:
        addAll in interface Collection<E>
        Specified by:
        addAll in interface List<E>
        Overrides:
        addAll in class ArrayList<E>
        Parameters:
        collection - the elements to be inserted into this list.
        Returns:
        true if this list changed as a result of the call.
        Throws:
        IllegalArgumentException - if at least one element is not of the expected type.
        UnsupportedOperationException - if this collection is unmodifiable.
      • addAll

        public boolean addAll​(int index,
                              Collection<? extends E> collection)
                       throws IllegalArgumentException,
                              UnsupportedOperationException
        Inserts all of the elements in the specified collection into this list, starting at the specified position.
        Specified by:
        addAll in interface List<E>
        Overrides:
        addAll in class ArrayList<E>
        Parameters:
        index - index at which to insert first element fromm the specified collection.
        collection - elements to be inserted into this list.
        Returns:
        true if this list changed as a result of the call.
        Throws:
        IllegalArgumentException - if at least one element is not of the expected type.
        UnsupportedOperationException - if this collection is unmodifiable.
      • remove

        public E remove​(int index)
                 throws UnsupportedOperationException
        Removes the element at the specified position in this list.
        Specified by:
        remove in interface List<E>
        Overrides:
        remove in class ArrayList<E>
        Throws:
        UnsupportedOperationException - if this collection is unmodifiable.
      • remove

        public boolean remove​(Object o)
                       throws UnsupportedOperationException
        Removes the first occurrence of the specified element from this list.
        Specified by:
        remove in interface Collection<E>
        Specified by:
        remove in interface List<E>
        Overrides:
        remove in class ArrayList<E>
        Throws:
        UnsupportedOperationException - if this collection is unmodifiable.
      • removeAll

        public boolean removeAll​(Collection<?> c)
                          throws UnsupportedOperationException
        Removes all of this list's elements that are also contained in the specified collection.
        Specified by:
        removeAll in interface Collection<E>
        Specified by:
        removeAll in interface List<E>
        Overrides:
        removeAll in class ArrayList<E>
        Throws:
        UnsupportedOperationException - if this collection is unmodifiable.
      • retainAll

        public boolean retainAll​(Collection<?> c)
                          throws UnsupportedOperationException
        Retains only the elements in this list that are contained in the specified collection.
        Specified by:
        retainAll in interface Collection<E>
        Specified by:
        retainAll in interface List<E>
        Overrides:
        retainAll in class ArrayList<E>
        Throws:
        UnsupportedOperationException - if this collection is unmodifiable.
      • trimToSize

        public void trimToSize()
        Trims the capacity to the list's current size.
        Overrides:
        trimToSize in class ArrayList<E>
      • ensureCapacity

        public void ensureCapacity​(int minCapacity)
        Increases the capacity, if necessary, to ensure that it can hold the given number of elements.
        Overrides:
        ensureCapacity in class ArrayList<E>
      • clear

        public void clear()
                   throws UnsupportedOperationException
        Removes all of the elements from this list.
        Specified by:
        clear in interface Collection<E>
        Specified by:
        clear in interface List<E>
        Overrides:
        clear in class ArrayList<E>
        Throws:
        UnsupportedOperationException - if this collection is unmodifiable.
      • toArray

        public Object[] toArray()
        Returns an array containing all of the elements in this list.
        Specified by:
        toArray in interface Collection<E>
        Specified by:
        toArray in interface List<E>
        Overrides:
        toArray in class ArrayList<E>
      • toArray

        public <T> T[] toArray​(T[] a)
        Returns an array containing all of the elements in this list in proper sequence.
        Specified by:
        toArray in interface Collection<E>
        Specified by:
        toArray in interface List<E>
        Overrides:
        toArray in class ArrayList<E>
        Type Parameters:
        T - The type of array elements.
      • toString

        public String toString()
        Returns a string representation of this list.
        Overrides:
        toString in class AbstractCollection<E>
      • equals

        public boolean equals​(Object o)
        Compares the specified object with this list for equality.
        Specified by:
        equals in interface Collection<E>
        Specified by:
        equals in interface List<E>
        Overrides:
        equals in class ArrayList<E>
      • hashCode

        public int hashCode()
        Returns the hash code value for this list.
        Specified by:
        hashCode in interface Collection<E>
        Specified by:
        hashCode in interface List<E>
        Overrides:
        hashCode in class ArrayList<E>
      • clone

        public CheckedArrayList<E> clone()
        Returns a shallow copy of this list.
        Specified by:
        clone in interface Cloneable
        Overrides:
        clone in class ArrayList<E>
        Returns:
        A shallow copy of this list.
        See Also:
        Object.clone()