Class CachedArrayList<E>

All Implemented Interfaces:
Serializable, Cloneable, Iterable<E>, Collection<E>, List<E>, RandomAccess, SequencedCollection<E>

public class CachedArrayList<E> extends 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:
  • Constructor Details

    • CachedArrayList

      public CachedArrayList()
    • CachedArrayList

      public CachedArrayList(Collection<? extends E> c)
    • CachedArrayList

      public CachedArrayList(int initialCapacity)
  • Method Details

    • indexOf

      public int indexOf(Object elem)
      Specified by:
      indexOf in interface List<E>
      Overrides:
      indexOf in class 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.
    • createCache

      protected Map<Object,CachedArrayList.IntegerWrapper> createCache()
    • cacheIt

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

      public void uncacheIt(Object o)
      Uncaches the index of the element.
      Parameters:
      o - the element
    • add

      public boolean add(E element)
      Specified by:
      add in interface Collection<E>
      Specified by:
      add in interface List<E>
      Overrides:
      add in class ArrayList<E>
    • add

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

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

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

      public boolean removeAll(Collection<?> c)
      Specified by:
      removeAll in interface Collection<E>
      Specified by:
      removeAll in interface List<E>
      Overrides:
      removeAll in class ArrayList<E>
    • clear

      public void clear()
      Specified by:
      clear in interface Collection<E>
      Specified by:
      clear in interface List<E>
      Overrides:
      clear in class ArrayList<E>
    • addAll

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

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

      public E set(int index, E element)
      Specified by:
      set in interface List<E>
      Overrides:
      set in class 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 ArrayList<E>