Interface ReferenceList<K>

All Superinterfaces:
Collection<K>, Iterable<K>, List<K>, ObjectIterable<K>, ReferenceCollection<K>
All Known Implementing Classes:
AbstractReferenceList, AbstractReferenceList.ReferenceSubList, ReferenceArrayList, ReferenceLists.EmptyList, ReferenceLists.Singleton, ReferenceLists.SynchronizedList, ReferenceLists.SynchronizedRandomAccessList, ReferenceLists.UnmodifiableList, ReferenceLists.UnmodifiableRandomAccessList

public interface ReferenceList<K>
extends List<K>, ReferenceCollection<K>
A type-specific List; provides some additional methods that use polymorphism to avoid (un)boxing.

Additionally, this interface strengthens iterator(), listIterator(), listIterator(int) and subList(int,int). The former had been already strengthened upstream, but unfortunately List re-specifies it.

Besides polymorphic methods, this interfaces specifies methods to copy into an array or remove contiguous sublists. Although the abstract implementation of this interface provides simple, one-by-one implementations of these methods, it is expected that concrete implementation override them with optimized versions.

See Also:
List
  • Method Details

    • iterator

      ObjectListIterator<K> iterator()
      Returns a type-specific iterator on the elements of this list.

      Note that this specification strengthens the one given in List.iterator(). It would not be normally necessary, but Iterable.iterator() is bizarrily re-specified in List.

      Specified by:
      iterator in interface Collection<K>
      Specified by:
      iterator in interface Iterable<K>
      Specified by:
      iterator in interface List<K>
      Specified by:
      iterator in interface ObjectIterable<K>
      Specified by:
      iterator in interface ReferenceCollection<K>
      Returns:
      an iterator on the elements of this list.
      See Also:
      Iterable.iterator()
    • listIterator

      ObjectListIterator<K> listIterator()
      Returns a type-specific list iterator on the list.
      Specified by:
      listIterator in interface List<K>
      See Also:
      List.listIterator()
    • listIterator

      ObjectListIterator<K> listIterator​(int index)
      Returns a type-specific list iterator on the list starting at a given index.
      Specified by:
      listIterator in interface List<K>
      See Also:
      List.listIterator(int)
    • subList

      ReferenceList<K> subList​(int from, int to)
      Returns a type-specific view of the portion of this list from the index from, inclusive, to the index to, exclusive.

      Note that this specification strengthens the one given in List.subList(int,int).

      Specified by:
      subList in interface List<K>
      See Also:
      List.subList(int,int)
    • size

      void size​(int size)
      Sets the size of this list.

      If the specified size is smaller than the current size, the last elements are discarded. Otherwise, they are filled with 0/null/false.

      Parameters:
      size - the new size.
    • getElements

      void getElements​(int from, Object[] a, int offset, int length)
      Copies (hopefully quickly) elements of this type-specific list into the given array.
      Parameters:
      from - the start index (inclusive).
      a - the destination array.
      offset - the offset into the destination array where to store the first element copied.
      length - the number of elements to be copied.
    • removeElements

      void removeElements​(int from, int to)
      Removes (hopefully quickly) elements of this type-specific list.
      Parameters:
      from - the start index (inclusive).
      to - the end index (exclusive).
    • addElements

      void addElements​(int index, K[] a)
      Add (hopefully quickly) elements to this type-specific list.
      Parameters:
      index - the index at which to add elements.
      a - the array containing the elements.
    • addElements

      void addElements​(int index, K[] a, int offset, int length)
      Add (hopefully quickly) elements to this type-specific list.
      Parameters:
      index - the index at which to add elements.
      a - the array containing the elements.
      offset - the offset of the first element to add.
      length - the number of elements to add.
    • setElements

      default void setElements​(K[] a)
      Set (hopefully quickly) elements to match the array given.
      Parameters:
      a - the array containing the elements.
      Since:
      8.3.0
    • setElements

      default void setElements​(int index, K[] a)
      Set (hopefully quickly) elements to match the array given.
      Parameters:
      index - the index at which to start setting elements.
      a - the array containing the elements.
      Since:
      8.3.0
    • setElements

      default void setElements​(int index, K[] a, int offset, int length)
      Set (hopefully quickly) elements to match the array given. Sets each in this list to the corresponding elements in the array, as if by
       
       ListIterator iter = listIterator(index);
       int i = 0;
       while (i < length) {
         iter.next();
         iter.set(a[offset + i++]);
       }
       
       
      However, the exact implementation may be more efficient, taking into account whether random access is faster or not, or at the discretion of subclasses, abuse internals.
      Parameters:
      index - the index at which to start setting elements.
      a - the array containing the elements
      offset - the offset of the first element to add.
      length - the number of elements to add.
      Since:
      8.3.0
    • unstableSort

      default void unstableSort​(Comparator<? super K> comparator)
      Sorts this list using a sort not assured to be stable. This differs from List.sort(java.util.Comparator) in that the results are not assured to be stable, but may be a bit faster.

      Unless a subclass specifies otherwise, the results of the method if the list is concurrently modified during the sort are unspecified.

      Since:
      8.3.0