Class LazyList<E>

  • Type Parameters:
    E - Object type (entity).
    All Implemented Interfaces:
    java.lang.Iterable<E>, java.util.Collection<E>, java.util.List<E>

    public class LazyList<E>
    extends java.lang.Object
    implements java.util.List<E>
    A thread-safe, unmodifiable List that gets Objects from their Box not until they are accessed. Internally the list is backed by an array of Object IDs.

    If the list is set to not cache retrieved Objects, each operation will get the latest version of an Object from its Box. However, in this mode only a limited set of List operations, like get or iterator are supported.

    If the list is set to cache retrieved Objects, operations will return a previously fetched version of an Object, which might not equal the latest version in its Box. However, in this mode almost all List operations are supported. Note that operations that require the whole list, like contains, will fetch all Objects in this list from the Box at once.

    Note: as Objects are fetched on demand, this list returns a null Object if the Object was removed from its Box after this list was created.

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      protected class  LazyList.LazyIterator  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(int location, E object)  
      boolean add​(E object)  
      boolean addAll​(int arg0, java.util.Collection<? extends E> arg1)  
      boolean addAll​(java.util.Collection<? extends E> arg0)  
      protected void checkCached()  
      void clear()  
      boolean contains​(java.lang.Object object)  
      boolean containsAll​(java.util.Collection<?> collection)  
      E get​(int location)
      Gets and returns the Object at the specified position in this list from its Box.
      int getLoadedCount()  
      int indexOf​(java.lang.Object object)  
      boolean isEmpty()  
      boolean isLoadedCompletely()  
      java.util.Iterator<E> iterator()  
      int lastIndexOf​(java.lang.Object object)  
      java.util.ListIterator<E> listIterator()  
      java.util.ListIterator<E> listIterator​(int location)  
      void loadRemaining()
      Loads the remaining entities (if any) that were not loaded before.
      E peek​(int location)
      Like get but does not load the entity if it was not loaded before.
      E remove​(int location)  
      boolean remove​(java.lang.Object object)  
      boolean removeAll​(java.util.Collection<?> arg0)  
      boolean retainAll​(java.util.Collection<?> arg0)  
      E set​(int location, E object)  
      int size()  
      java.util.List<E> subList​(int start, int end)  
      java.lang.Object[] toArray()  
      <T> T[] toArray​(T[] array)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, 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

        equals, hashCode, replaceAll, sort, spliterator
    • Method Detail

      • loadRemaining

        public void loadRemaining()
        Loads the remaining entities (if any) that were not loaded before. Applies to cached lazy lists only.
      • checkCached

        protected void checkCached()
      • peek

        public E peek​(int location)
        Like get but does not load the entity if it was not loaded before.
      • getLoadedCount

        public int getLoadedCount()
      • isLoadedCompletely

        public boolean isLoadedCompletely()
      • add

        public boolean add​(E object)
        Specified by:
        add in interface java.util.Collection<E>
        Specified by:
        add in interface java.util.List<E>
      • add

        public void add​(int location,
                        E object)
        Specified by:
        add in interface java.util.List<E>
      • addAll

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

        public boolean addAll​(int arg0,
                              java.util.Collection<? extends E> arg1)
        Specified by:
        addAll in interface java.util.List<E>
      • clear

        public void clear()
        Specified by:
        clear in interface java.util.Collection<E>
        Specified by:
        clear in interface java.util.List<E>
      • contains

        public boolean contains​(java.lang.Object object)
        Specified by:
        contains in interface java.util.Collection<E>
        Specified by:
        contains in interface java.util.List<E>
      • containsAll

        public boolean containsAll​(java.util.Collection<?> collection)
        Specified by:
        containsAll in interface java.util.Collection<E>
        Specified by:
        containsAll in interface java.util.List<E>
      • get

        @Nullable
        public E get​(int location)
        Gets and returns the Object at the specified position in this list from its Box. Returns null if the Object was removed from its Box. If this list is caching retrieved Objects, returns the previously fetched version.
        Specified by:
        get in interface java.util.List<E>
      • indexOf

        public int indexOf​(java.lang.Object object)
        Specified by:
        indexOf in interface java.util.List<E>
      • isEmpty

        public boolean isEmpty()
        Specified by:
        isEmpty in interface java.util.Collection<E>
        Specified by:
        isEmpty in interface java.util.List<E>
      • iterator

        public java.util.Iterator<E> iterator()
        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>
      • lastIndexOf

        public int lastIndexOf​(java.lang.Object object)
        Specified by:
        lastIndexOf in interface java.util.List<E>
      • listIterator

        public java.util.ListIterator<E> listIterator()
        Specified by:
        listIterator in interface java.util.List<E>
      • listIterator

        public java.util.ListIterator<E> listIterator​(int location)
        Specified by:
        listIterator in interface java.util.List<E>
      • remove

        public E remove​(int location)
        Specified by:
        remove in interface java.util.List<E>
      • remove

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

        public boolean removeAll​(java.util.Collection<?> arg0)
        Specified by:
        removeAll in interface java.util.Collection<E>
        Specified by:
        removeAll in interface java.util.List<E>
      • retainAll

        public boolean retainAll​(java.util.Collection<?> arg0)
        Specified by:
        retainAll in interface java.util.Collection<E>
        Specified by:
        retainAll in interface java.util.List<E>
      • set

        public E set​(int location,
                     E object)
        Specified by:
        set in interface java.util.List<E>
      • size

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

        public java.util.List<E> subList​(int start,
                                         int end)
        Specified by:
        subList in interface java.util.List<E>
      • toArray

        public java.lang.Object[] toArray()
        Specified by:
        toArray in interface java.util.Collection<E>
        Specified by:
        toArray in interface java.util.List<E>
      • toArray

        public <T> T[] toArray​(T[] array)
        Specified by:
        toArray in interface java.util.Collection<E>
        Specified by:
        toArray in interface java.util.List<E>