Class CopyList<E>

  • Type Parameters:
    E - the type of elements in this list
    All Implemented Interfaces:
    java.lang.Iterable<E>, java.util.Collection<E>, java.util.List<E>, java.util.RandomAccess

    public final class CopyList<E>
    extends java.util.AbstractList<E>
    implements java.util.RandomAccess
    A List implementation initially based on given array, but never modifying the array directly. On the first modification, the implementation will create its own copy of the array, and after that it behaves mostly as an ArrayList.
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      private class  CopyList.Itr  
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private E[] array  
      private boolean pristine  
      private int size  
      • Fields inherited from class java.util.AbstractList

        modCount
    • Constructor Summary

      Constructors 
      Constructor Description
      CopyList​(E[] array)
      Create a List over given array.
      CopyList​(E[] array, int size)
      Create a List over given array and size.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(int index, E element)  
      boolean add​(E element)  
      private void changeCheck()  
      void clear()  
      private void ensureCapacity​(int target)  
      E get​(int index)  
      java.util.Iterator<E> iterator()  
      private void rangeCheck​(int index)  
      E remove​(int index)  
      E set​(int index, E element)  
      int size()  
      • Methods inherited from class java.util.AbstractList

        addAll, equals, hashCode, indexOf, lastIndexOf, listIterator, listIterator, removeRange, subList
      • Methods inherited from class java.util.AbstractCollection

        addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray, toString
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.util.Collection

        parallelStream, removeIf, stream, toArray
      • Methods inherited from interface java.lang.Iterable

        forEach
      • Methods inherited from interface java.util.List

        addAll, contains, containsAll, isEmpty, remove, removeAll, replaceAll, retainAll, sort, spliterator, toArray, toArray
    • Constructor Detail

      • CopyList

        public CopyList​(E[] array)
        Create a List over given array.
        Parameters:
        array - The initial List content. The array is never modified by the CopyList.
      • CopyList

        public CopyList​(E[] array,
                        int size)
        Create a List over given array and size.
        Parameters:
        array - The initial List content. The array is never modified by the CopyList.
        size - number of items
    • Method Detail

      • get

        public E get​(int index)
        Specified by:
        get in interface java.util.List<E>
        Specified by:
        get in class java.util.AbstractList<E>
      • size

        public int size()
        Specified by:
        size in interface java.util.Collection<E>
        Specified by:
        size in interface java.util.List<E>
        Specified by:
        size in class java.util.AbstractCollection<E>
      • set

        public E set​(int index,
                     E element)
        Specified by:
        set in interface java.util.List<E>
        Overrides:
        set in class java.util.AbstractList<E>
      • add

        public void add​(int index,
                        E element)
        Specified by:
        add in interface java.util.List<E>
        Overrides:
        add in class java.util.AbstractList<E>
      • remove

        public E remove​(int index)
        Specified by:
        remove in interface java.util.List<E>
        Overrides:
        remove in class java.util.AbstractList<E>
      • add

        public boolean add​(E element)
        Specified by:
        add in interface java.util.Collection<E>
        Specified by:
        add in interface java.util.List<E>
        Overrides:
        add in class java.util.AbstractList<E>
      • clear

        public void clear()
        Specified by:
        clear in interface java.util.Collection<E>
        Specified by:
        clear in interface java.util.List<E>
        Overrides:
        clear in class java.util.AbstractList<E>
      • rangeCheck

        private void rangeCheck​(int index)
      • iterator

        public java.util.Iterator<Eiterator()
        Specified by:
        iterator in interface java.util.Collection<E>
        Specified by:
        iterator in interface java.lang.Iterable<E>
        Specified by:
        iterator in interface java.util.List<E>
        Overrides:
        iterator in class java.util.AbstractList<E>