Class CachedArrayList<E>

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, java.lang.Iterable<E>, java.util.Collection<E>, java.util.List<E>, java.util.RandomAccess

    public class CachedArrayList<E>
    extends java.util.ArrayList<E>
    This is a fast access ArrayList that sacrifices memory for speed. It will reduce the speed of indexOf method from O(n) to O(1). However it will at least double the memory used by ArrayList. So use it appropriately.

    Just like ArrayList, this implementation is not synchronized. If you want a thread safe implementation, you can use CachedArrayList.

    See Also:
    Serialized Form
    • Field Summary

      • Fields inherited from class java.util.AbstractList

        modCount
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(int index, E element)  
      boolean add​(E element)  
      boolean addAll​(int index, java.util.Collection<? extends E> c)  
      boolean addAll​(java.util.Collection<? extends E> c)  
      protected void adjustCache​(int index, int increase)
      Adjusts the cache so that all values that are greater than index will increase by the value specified by the increase parameter.
      void cacheAll()
      Cache all the element index.
      void cacheIt​(java.lang.Object o, int index)
      Caches the index of the element.
      void clear()  
      protected java.util.Map<java.lang.Object,​CachedArrayList.IntegerWrapper> createCache()  
      int indexOf​(java.lang.Object elem)  
      void invalidateCache()
      Invalidated the whole cache.
      boolean isLazyCaching()  
      E remove​(int index)  
      boolean remove​(java.lang.Object o)  
      boolean removeAll​(java.util.Collection<?> c)  
      protected void removeRange​(int fromIndex, int toIndex)  
      E set​(int index, E element)  
      void setLazyCaching​(boolean lazyCaching)  
      void uncacheAll()
      Uncache the whole cache.
      void uncacheIt​(java.lang.Object o)
      Uncaches the index of the element.
      • Methods inherited from class java.util.ArrayList

        clone, contains, ensureCapacity, equals, forEach, get, hashCode, isEmpty, iterator, lastIndexOf, listIterator, listIterator, removeIf, replaceAll, retainAll, size, sort, spliterator, subList, toArray, toArray, trimToSize
      • Methods inherited from class java.util.AbstractCollection

        containsAll, toString
      • Methods inherited from class java.lang.Object

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

        parallelStream, stream, toArray
      • Methods inherited from interface java.util.List

        containsAll
    • Constructor Detail

      • CachedArrayList

        public CachedArrayList()
      • CachedArrayList

        public CachedArrayList​(java.util.Collection<? extends E> c)
      • CachedArrayList

        public CachedArrayList​(int initialCapacity)
    • Method Detail

      • indexOf

        public int indexOf​(java.lang.Object elem)
        Specified by:
        indexOf in interface java.util.List<E>
        Overrides:
        indexOf in class java.util.ArrayList<E>
      • adjustCache

        protected void adjustCache​(int index,
                                   int increase)
        Adjusts the cache so that all values that are greater than index will increase by the value specified by the increase parameter.
        Parameters:
        index - the index. All values above this index will be changed.
        increase - a positive number to increase or a negative number to decrease.
      • cacheIt

        public void cacheIt​(java.lang.Object o,
                            int index)
        Caches the index of the element.
        Parameters:
        o - the element
        index - the index.
      • uncacheIt

        public void uncacheIt​(java.lang.Object o)
        Uncaches the index of the element.
        Parameters:
        o - the element
      • 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.ArrayList<E>
      • add

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

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

        public boolean remove​(java.lang.Object o)
        Specified by:
        remove in interface java.util.Collection<E>
        Specified by:
        remove in interface java.util.List<E>
        Overrides:
        remove in class java.util.ArrayList<E>
      • removeAll

        public boolean removeAll​(java.util.Collection<?> c)
        Specified by:
        removeAll in interface java.util.Collection<E>
        Specified by:
        removeAll in interface java.util.List<E>
        Overrides:
        removeAll in class java.util.ArrayList<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.ArrayList<E>
      • addAll

        public boolean addAll​(java.util.Collection<? extends E> c)
        Specified by:
        addAll in interface java.util.Collection<E>
        Specified by:
        addAll in interface java.util.List<E>
        Overrides:
        addAll in class java.util.ArrayList<E>
      • addAll

        public boolean addAll​(int index,
                              java.util.Collection<? extends E> c)
        Specified by:
        addAll in interface java.util.List<E>
        Overrides:
        addAll in class java.util.ArrayList<E>
      • set

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

        public void invalidateCache()
        Invalidated the whole cache.
      • uncacheAll

        public void uncacheAll()
        Uncache the whole cache. It is the same as invalidateCache().
      • cacheAll

        public void cacheAll()
        Cache all the element index.
      • isLazyCaching

        public boolean isLazyCaching()
      • setLazyCaching

        public void setLazyCaching​(boolean lazyCaching)
      • removeRange

        protected void removeRange​(int fromIndex,
                                   int toIndex)
        Overrides:
        removeRange in class java.util.ArrayList<E>