Class ReferenceImmutableList<K>
- java.lang.Object
-
- java.util.AbstractCollection<K>
-
- it.unimi.dsi.fastutil.objects.AbstractReferenceCollection<K>
-
- it.unimi.dsi.fastutil.objects.AbstractReferenceList<K>
-
- it.unimi.dsi.fastutil.objects.ReferenceImmutableList<K>
-
- All Implemented Interfaces:
ObjectIterable<K>,ReferenceCollection<K>,ReferenceList<K>,Stack<K>,java.io.Serializable,java.lang.Cloneable,java.lang.Iterable<K>,java.util.Collection<K>,java.util.List<K>,java.util.RandomAccess
public class ReferenceImmutableList<K> extends AbstractReferenceList<K> implements ReferenceList<K>, java.util.RandomAccess, java.lang.Cloneable, java.io.Serializable
A type-specific array-based immutable list; provides some additional methods that use polymorphism to avoid (un)boxing.Instances of this class are immutable and (contrarily to mutable array-based list implementations) the backing array is not exposed. Instances can be built using a variety of methods, but note that constructors using an array will not make a defensive copy.
This class implements the bulk method
getElements()using high-performance system calls (e.g.,System.arraycopy()) instead of expensive loops.- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class it.unimi.dsi.fastutil.objects.AbstractReferenceList
AbstractReferenceList.ReferenceRandomAccessSubList<K>, AbstractReferenceList.ReferenceSubList<K>
-
-
Constructor Summary
Constructors Constructor Description ReferenceImmutableList(ObjectIterator<? extends K> i)Creates a new immutable list and fills it with the elements returned by a type-specific iterator..ReferenceImmutableList(ReferenceCollection<? extends K> c)Creates a new immutable list and fills it with a given type-specific collection.ReferenceImmutableList(ReferenceList<? extends K> l)Creates a new immutable list and fills it with a given type-specific list.ReferenceImmutableList(java.util.Collection<? extends K> c)Creates a new immutable list and fills it with a given collection.ReferenceImmutableList(K[] a)Creates a new immutable list using a given array.ReferenceImmutableList(K[] a, int offset, int length)Creates a new immutable list and fills it with the elements of a given array.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidadd(int index, K k)Deprecated.booleanadd(K k)Deprecated.booleanaddAll(int index, java.util.Collection<? extends K> c)Deprecated.booleanaddAll(java.util.Collection<? extends K> c)Deprecated.voidaddElements(int index, K[] a, int offset, int length)Deprecated.voidclear()Deprecated.ReferenceImmutableList<K>clone()booleanequals(ReferenceImmutableList<K> l)Compares this type-specific immutable list to another one.booleanequals(java.lang.Object o)voidforEach(java.util.function.Consumer<? super K> action)Kget(int index)voidgetElements(int from, java.lang.Object[] a, int offset, int length)Copies element of this type-specific list into the given array using optimized system calls.intindexOf(java.lang.Object k)booleanisEmpty()Checks whether the stack is empty.intlastIndexOf(java.lang.Object k)ObjectListIterator<K>listIterator(int index)Returns a type-specific list iterator on the list starting at a given index.static <K> ReferenceImmutableList<K>of()Returns an empty immutable list.static <K> ReferenceImmutableList<K>of(K... init)Creates an immutable list using a list of elements.Kremove(int index)Deprecated.booleanremove(java.lang.Object k)Deprecated.booleanremoveAll(java.util.Collection<?> c)Deprecated.voidremoveElements(int from, int to)Deprecated.booleanremoveIf(java.util.function.Predicate<? super K> c)Deprecated.voidreplaceAll(java.util.function.UnaryOperator<K> operator)Deprecated.booleanretainAll(java.util.Collection<?> c)Deprecated.Kset(int index, K k)Deprecated.voidsetElements(int index, K[] a, int offset, int length)Deprecated.intsize()voidsize(int size)Deprecated.voidsort(java.util.Comparator<? super K> comparator)Deprecated.ObjectSpliterator<K>spliterator()Returns a type-specific spliterator on the elements of this list.ReferenceList<K>subList(int from, int to)Returns a type-specific view of the portion of this list from the indexfrom, inclusive, to the indexto, exclusive.java.lang.Object[]toArray()<T> T[]toArray(T[] a)static <K> java.util.stream.Collector<K,?,ReferenceImmutableList<K>>toList()Returns aCollectorthat collects aStream's elements into a new ImmutableList.static <K> java.util.stream.Collector<K,?,ReferenceImmutableList<K>>toListWithExpectedSize(int expectedSize)Returns aCollectorthat collects aStream's elements into a new ImmutableList, potentially pre-allocated to handle the given size.voidunstableSort(java.util.Comparator<? super K> comparator)Deprecated.-
Methods inherited from class it.unimi.dsi.fastutil.objects.AbstractReferenceList
addElements, contains, hashCode, iterator, listIterator, peek, pop, push, top, toString
-
Methods inherited from interface java.util.List
add, add, addAll, addAll, clear, contains, containsAll, hashCode, remove, remove, removeAll, replaceAll, retainAll, set
-
Methods inherited from interface it.unimi.dsi.fastutil.objects.ReferenceList
addAll, addAll, addElements, addElements, iterator, listIterator, removeElements, setElements, setElements, setElements, size, sort, unstableSort
-
-
-
-
Constructor Detail
-
ReferenceImmutableList
public ReferenceImmutableList(K[] a)
Creates a new immutable list using a given array.Note that this constructor does not perform a defensive copy.
- Parameters:
a- the array that will be used to back this immutable list.
-
ReferenceImmutableList
public ReferenceImmutableList(java.util.Collection<? extends K> c)
Creates a new immutable list and fills it with a given collection.- Parameters:
c- a collection that will be used to fill the immutable list.
-
ReferenceImmutableList
public ReferenceImmutableList(ReferenceCollection<? extends K> c)
Creates a new immutable list and fills it with a given type-specific collection.- Parameters:
c- a type-specific collection that will be used to fill the immutable list.
-
ReferenceImmutableList
public ReferenceImmutableList(ReferenceList<? extends K> l)
Creates a new immutable list and fills it with a given type-specific list.- Parameters:
l- a type-specific list that will be used to fill the immutable list.
-
ReferenceImmutableList
public ReferenceImmutableList(K[] a, int offset, int length)
Creates a new immutable list and fills it with the elements of a given array.- Parameters:
a- an array whose elements will be used to fill the immutable list.offset- the first element to use.length- the number of elements to use.
-
ReferenceImmutableList
public ReferenceImmutableList(ObjectIterator<? extends K> i)
Creates a new immutable list and fills it with the elements returned by a type-specific iterator..- Parameters:
i- a type-specific iterator whose returned elements will fill the immutable list.
-
-
Method Detail
-
of
public static <K> ReferenceImmutableList<K> of()
Returns an empty immutable list.- Returns:
- an immutable list (possibly shared) that is empty.
-
of
@SafeVarargs public static <K> ReferenceImmutableList<K> of(K... init)
Creates an immutable list using a list of elements.Note that this method does not perform a defensive copy.
- Parameters:
init- a list of elements that will be used to initialize the list.- Returns:
- a new immutable list containing the given elements.
-
toList
public static <K> java.util.stream.Collector<K,?,ReferenceImmutableList<K>> toList()
Returns aCollectorthat collects aStream's elements into a new ImmutableList.
-
toListWithExpectedSize
public static <K> java.util.stream.Collector<K,?,ReferenceImmutableList<K>> toListWithExpectedSize(int expectedSize)
Returns aCollectorthat collects aStream's elements into a new ImmutableList, potentially pre-allocated to handle the given size.
-
indexOf
public int indexOf(java.lang.Object k)
- Specified by:
indexOfin interfacejava.util.List<K>- Overrides:
indexOfin classAbstractReferenceList<K>
-
lastIndexOf
public int lastIndexOf(java.lang.Object k)
- Specified by:
lastIndexOfin interfacejava.util.List<K>- Overrides:
lastIndexOfin classAbstractReferenceList<K>
-
size
public int size()
-
isEmpty
public boolean isEmpty()
Description copied from interface:StackChecks whether the stack is empty.
-
getElements
public void getElements(int from, java.lang.Object[] a, int offset, int length)Copies element of this type-specific list into the given array using optimized system calls.- Specified by:
getElementsin interfaceReferenceList<K>- Overrides:
getElementsin classAbstractReferenceList<K>- 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.
-
forEach
public void forEach(java.util.function.Consumer<? super K> action)
Description copied from class:AbstractReferenceList- Specified by:
forEachin interfacejava.lang.Iterable<K>- Overrides:
forEachin classAbstractReferenceList<K>
-
toArray
public java.lang.Object[] toArray()
- Specified by:
toArrayin interfacejava.util.Collection<K>- Specified by:
toArrayin interfacejava.util.List<K>- Overrides:
toArrayin classAbstractReferenceList<K>
-
toArray
public <T> T[] toArray(T[] a)
- Specified by:
toArrayin interfacejava.util.Collection<K>- Specified by:
toArrayin interfacejava.util.List<K>- Overrides:
toArrayin classAbstractReferenceList<K>
-
listIterator
public ObjectListIterator<K> listIterator(int index)
Description copied from class:AbstractReferenceListReturns a type-specific list iterator on the list starting at a given index.- Specified by:
listIteratorin interfacejava.util.List<K>- Specified by:
listIteratorin interfaceReferenceList<K>- Overrides:
listIteratorin classAbstractReferenceList<K>- See Also:
List.listIterator(int)
-
spliterator
public ObjectSpliterator<K> spliterator()
Description copied from interface:ReferenceListReturns a type-specific spliterator on the elements of this list.List spliterators must report at least
Spliterator.SIZEDandSpliterator.ORDERED.See
List.spliterator()for more documentation on the requirements of the returned spliterator.- Specified by:
spliteratorin interfacejava.util.Collection<K>- Specified by:
spliteratorin interfacejava.lang.Iterable<K>- Specified by:
spliteratorin interfacejava.util.List<K>- Specified by:
spliteratorin interfaceObjectIterable<K>- Specified by:
spliteratorin interfaceReferenceCollection<K>- Specified by:
spliteratorin interfaceReferenceList<K>- Returns:
- a type-specific spliterator on the elements of this collection.
-
subList
public ReferenceList<K> subList(int from, int to)
Returns a type-specific view of the portion of this list from the indexfrom, inclusive, to the indexto, exclusive.- Specified by:
subListin interfacejava.util.List<K>- Specified by:
subListin interfaceReferenceList<K>- Overrides:
subListin classAbstractReferenceList<K>- See Also:
List.subList(int,int)- API Notes:
- The returned list will be immutable, but is currently not declared to return an
instance of
ImmutableListdue to complications of implementation details. This may change in a future version (in other words, do not consider the return type of this method to be stable if making a subclass ofImmutableList).
-
clone
public ReferenceImmutableList<K> clone()
-
equals
public boolean equals(ReferenceImmutableList<K> l)
Compares this type-specific immutable list to another one.- Parameters:
l- a type-specific immutable list.- Returns:
- true if the argument contains the same elements of this type-specific immutable list.
- API Notes:
- This method exists only for sake of efficiency. The implementation inherited from the abstract implementation would already work.
-
equals
public boolean equals(java.lang.Object o)
- Specified by:
equalsin interfacejava.util.Collection<K>- Specified by:
equalsin interfacejava.util.List<K>- Overrides:
equalsin classAbstractReferenceList<K>
-
add
@Deprecated public final void add(int index, K k)Deprecated.Description copied from class:AbstractReferenceList- Specified by:
addin interfacejava.util.List<K>- Overrides:
addin classAbstractReferenceList<K>- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
add
@Deprecated public final boolean add(K k)
Deprecated.Description copied from class:AbstractReferenceList- Specified by:
addin interfacejava.util.Collection<K>- Specified by:
addin interfacejava.util.List<K>- Overrides:
addin classAbstractReferenceList<K>- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
addAll
@Deprecated public final boolean addAll(java.util.Collection<? extends K> c)
Deprecated.Description copied from class:AbstractReferenceList- Specified by:
addAllin interfacejava.util.Collection<K>- Specified by:
addAllin interfacejava.util.List<K>- Overrides:
addAllin classAbstractReferenceList<K>- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
addAll
@Deprecated public final boolean addAll(int index, java.util.Collection<? extends K> c)Deprecated.Description copied from class:AbstractReferenceListAdds all of the elements in the specified collection to this list (optional operation).- Specified by:
addAllin interfacejava.util.List<K>- Overrides:
addAllin classAbstractReferenceList<K>- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
remove
@Deprecated public final K remove(int index)
Deprecated.Description copied from class:AbstractReferenceList- Specified by:
removein interfacejava.util.List<K>- Overrides:
removein classAbstractReferenceList<K>- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
remove
@Deprecated public final boolean remove(java.lang.Object k)
Deprecated.- Specified by:
removein interfacejava.util.Collection<K>- Specified by:
removein interfacejava.util.List<K>- Overrides:
removein classjava.util.AbstractCollection<K>- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
removeAll
@Deprecated public final boolean removeAll(java.util.Collection<?> c)
Deprecated.- Specified by:
removeAllin interfacejava.util.Collection<K>- Specified by:
removeAllin interfacejava.util.List<K>- Overrides:
removeAllin classjava.util.AbstractCollection<K>- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
retainAll
@Deprecated public final boolean retainAll(java.util.Collection<?> c)
Deprecated.- Specified by:
retainAllin interfacejava.util.Collection<K>- Specified by:
retainAllin interfacejava.util.List<K>- Overrides:
retainAllin classjava.util.AbstractCollection<K>- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
removeIf
@Deprecated public final boolean removeIf(java.util.function.Predicate<? super K> c)
Deprecated.- Specified by:
removeIfin interfacejava.util.Collection<K>- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
replaceAll
@Deprecated public final void replaceAll(java.util.function.UnaryOperator<K> operator)
Deprecated.- Specified by:
replaceAllin interfacejava.util.List<K>- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
set
@Deprecated public final K set(int index, K k)Deprecated.Description copied from class:AbstractReferenceList- Specified by:
setin interfacejava.util.List<K>- Overrides:
setin classAbstractReferenceList<K>- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
clear
@Deprecated public final void clear()
Deprecated.Description copied from class:AbstractReferenceList- Specified by:
clearin interfacejava.util.Collection<K>- Specified by:
clearin interfacejava.util.List<K>- Overrides:
clearin classAbstractReferenceList<K>- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
size
@Deprecated public final void size(int size)
Deprecated.Description copied from interface:ReferenceListSets 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.- Specified by:
sizein interfaceReferenceList<K>- Overrides:
sizein classAbstractReferenceList<K>- Parameters:
size- the new size.- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
removeElements
@Deprecated public final void removeElements(int from, int to)Deprecated.Description copied from class:AbstractReferenceListRemoves (hopefully quickly) elements of this type-specific list.This is a trivial iterator-based based implementation. It is expected that implementations will override this method with a more optimized version.
- Specified by:
removeElementsin interfaceReferenceList<K>- Overrides:
removeElementsin classAbstractReferenceList<K>- Parameters:
from- the start index (inclusive).to- the end index (exclusive).- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
addElements
@Deprecated public final void addElements(int index, K[] a, int offset, int length)Deprecated.Description copied from class:AbstractReferenceListAdd (hopefully quickly) elements to this type-specific list.This is a trivial iterator-based implementation. It is expected that implementations will override this method with a more optimized version.
- Specified by:
addElementsin interfaceReferenceList<K>- Overrides:
addElementsin classAbstractReferenceList<K>- 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.- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
setElements
@Deprecated public final void setElements(int index, K[] a, int offset, int length)Deprecated.Description copied from interface:ReferenceListSet (hopefully quickly) elements to match the array given. Sets each in this list to the corresponding elements in the array, as if byListIterator 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.- Specified by:
setElementsin interfaceReferenceList<K>- Overrides:
setElementsin classAbstractReferenceList<K>- Parameters:
index- the index at which to start setting elements.a- the array containing the elementsoffset- the offset of the first element to add.length- the number of elements to add.- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
sort
@Deprecated public final void sort(java.util.Comparator<? super K> comparator)
Deprecated.Description copied from interface:ReferenceListSorts this list using a sort assured to be stable.Pass
nullto sort using natural ordering.Unless a subclass specifies otherwise, the results of the method if the list is concurrently modified during the sort are unspecified.
- Specified by:
sortin interfacejava.util.List<K>- Specified by:
sortin interfaceReferenceList<K>- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
unstableSort
@Deprecated public final void unstableSort(java.util.Comparator<? super K> comparator)
Deprecated.Description copied from interface:ReferenceListSorts this list using a sort not assured to be stable. This differs fromList.sort(java.util.Comparator)in that the results are not assured to be stable, but may be a bit faster.Pass
nullto sort using natural ordering.Unless a subclass specifies otherwise, the results of the method if the list is concurrently modified during the sort are unspecified.
- Specified by:
unstableSortin interfaceReferenceList<K>- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
-