Class ObjectImmutableList<K>
- java.lang.Object
-
- java.util.AbstractCollection<K>
-
- it.unimi.dsi.fastutil.objects.AbstractObjectCollection<K>
-
- it.unimi.dsi.fastutil.objects.AbstractObjectList<K>
-
- it.unimi.dsi.fastutil.objects.ObjectImmutableList<K>
-
- All Implemented Interfaces:
ObjectCollection<K>,ObjectIterable<K>,ObjectList<K>,Stack<K>,java.io.Serializable,java.lang.Cloneable,java.lang.Comparable<java.util.List<? extends K>>,java.lang.Iterable<K>,java.util.Collection<K>,java.util.List<K>,java.util.RandomAccess
public class ObjectImmutableList<K> extends AbstractObjectList<K> implements ObjectList<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.AbstractObjectList
AbstractObjectList.ObjectRandomAccessSubList<K>, AbstractObjectList.ObjectSubList<K>
-
-
Constructor Summary
Constructors Constructor Description ObjectImmutableList(ObjectCollection<? extends K> c)Creates a new immutable list and fills it with a given type-specific collection.ObjectImmutableList(ObjectIterator<? extends K> i)Creates a new immutable list and fills it with the elements returned by a type-specific iterator..ObjectImmutableList(ObjectList<? extends K> l)Creates a new immutable list and fills it with a given type-specific list.ObjectImmutableList(java.util.Collection<? extends K> c)Creates a new immutable list and fills it with a given collection.ObjectImmutableList(K[] a)Creates a new immutable list using a given array.ObjectImmutableList(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.ObjectImmutableList<K>clone()intcompareTo(ObjectImmutableList<? extends K> l)Compares this immutable list to another immutable list.intcompareTo(java.util.List<? extends K> l)Compares this list to another object.booleanequals(ObjectImmutableList<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> ObjectImmutableList<K>of()Returns an empty immutable list.static <K> ObjectImmutableList<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.ObjectList<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,?,ObjectImmutableList<K>>toList()Returns aCollectorthat collects aStream's elements into a new ImmutableList.static <K> java.util.stream.Collector<K,?,ObjectImmutableList<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.AbstractObjectList
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.ObjectList
addAll, addAll, addElements, addElements, iterator, listIterator, removeElements, setElements, setElements, setElements, size, sort, unstableSort
-
-
-
-
Constructor Detail
-
ObjectImmutableList
public ObjectImmutableList(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.
-
ObjectImmutableList
public ObjectImmutableList(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.
-
ObjectImmutableList
public ObjectImmutableList(ObjectCollection<? 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.
-
ObjectImmutableList
public ObjectImmutableList(ObjectList<? 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.
-
ObjectImmutableList
public ObjectImmutableList(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.
-
ObjectImmutableList
public ObjectImmutableList(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> ObjectImmutableList<K> of()
Returns an empty immutable list.- Returns:
- an immutable list (possibly shared) that is empty.
-
of
@SafeVarargs public static <K> ObjectImmutableList<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,?,ObjectImmutableList<K>> toList()
Returns aCollectorthat collects aStream's elements into a new ImmutableList.
-
toListWithExpectedSize
public static <K> java.util.stream.Collector<K,?,ObjectImmutableList<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 classAbstractObjectList<K>
-
lastIndexOf
public int lastIndexOf(java.lang.Object k)
- Specified by:
lastIndexOfin interfacejava.util.List<K>- Overrides:
lastIndexOfin classAbstractObjectList<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 interfaceObjectList<K>- Overrides:
getElementsin classAbstractObjectList<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:AbstractObjectList- Specified by:
forEachin interfacejava.lang.Iterable<K>- Overrides:
forEachin classAbstractObjectList<K>
-
toArray
public java.lang.Object[] toArray()
- Specified by:
toArrayin interfacejava.util.Collection<K>- Specified by:
toArrayin interfacejava.util.List<K>- Overrides:
toArrayin classAbstractObjectList<K>
-
toArray
public <T> T[] toArray(T[] a)
- Specified by:
toArrayin interfacejava.util.Collection<K>- Specified by:
toArrayin interfacejava.util.List<K>- Overrides:
toArrayin classAbstractObjectList<K>
-
listIterator
public ObjectListIterator<K> listIterator(int index)
Description copied from class:AbstractObjectListReturns a type-specific list iterator on the list starting at a given index.- Specified by:
listIteratorin interfacejava.util.List<K>- Specified by:
listIteratorin interfaceObjectList<K>- Overrides:
listIteratorin classAbstractObjectList<K>- See Also:
List.listIterator(int)
-
spliterator
public ObjectSpliterator<K> spliterator()
Description copied from interface:ObjectListReturns 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 interfaceObjectCollection<K>- Specified by:
spliteratorin interfaceObjectIterable<K>- Specified by:
spliteratorin interfaceObjectList<K>- Returns:
- a type-specific spliterator on the elements of this collection.
-
subList
public ObjectList<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 interfaceObjectList<K>- Overrides:
subListin classAbstractObjectList<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 ObjectImmutableList<K> clone()
-
equals
public boolean equals(ObjectImmutableList<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 classAbstractObjectList<K>
-
compareTo
public int compareTo(ObjectImmutableList<? extends K> l)
Compares this immutable list to another immutable list.- Parameters:
l- an immutable list.- Returns:
- a negative integer, zero, or a positive integer as this list is lexicographically less than, equal to, or greater than the argument.
- API Notes:
- This method exists only for sake of efficiency. The implementation inherited from the abstract implementation would already work.
-
compareTo
public int compareTo(java.util.List<? extends K> l)
Description copied from class:AbstractObjectListCompares this list to another object. If the argument is aList, this method performs a lexicographical comparison; otherwise, it throws aClassCastException.- Specified by:
compareToin interfacejava.lang.Comparable<K>- Overrides:
compareToin classAbstractObjectList<K>- Parameters:
l- a list.- Returns:
- if the argument is a
List, a negative integer, zero, or a positive integer as this list is lexicographically less than, equal to, or greater than the argument.
-
add
@Deprecated public final void add(int index, K k)Deprecated.Description copied from class:AbstractObjectList- Specified by:
addin interfacejava.util.List<K>- Overrides:
addin classAbstractObjectList<K>- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
add
@Deprecated public final boolean add(K k)
Deprecated.Description copied from class:AbstractObjectList- Specified by:
addin interfacejava.util.Collection<K>- Specified by:
addin interfacejava.util.List<K>- Overrides:
addin classAbstractObjectList<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:AbstractObjectList- Specified by:
addAllin interfacejava.util.Collection<K>- Specified by:
addAllin interfacejava.util.List<K>- Overrides:
addAllin classAbstractObjectList<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:AbstractObjectListAdds all of the elements in the specified collection to this list (optional operation).- Specified by:
addAllin interfacejava.util.List<K>- Overrides:
addAllin classAbstractObjectList<K>- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
remove
@Deprecated public final K remove(int index)
Deprecated.Description copied from class:AbstractObjectList- Specified by:
removein interfacejava.util.List<K>- Overrides:
removein classAbstractObjectList<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:AbstractObjectList- Specified by:
setin interfacejava.util.List<K>- Overrides:
setin classAbstractObjectList<K>- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
clear
@Deprecated public final void clear()
Deprecated.Description copied from class:AbstractObjectList- Specified by:
clearin interfacejava.util.Collection<K>- Specified by:
clearin interfacejava.util.List<K>- Overrides:
clearin classAbstractObjectList<K>- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
size
@Deprecated public final void size(int size)
Deprecated.Description copied from interface:ObjectListSets 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 interfaceObjectList<K>- Overrides:
sizein classAbstractObjectList<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:AbstractObjectListRemoves (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 interfaceObjectList<K>- Overrides:
removeElementsin classAbstractObjectList<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:AbstractObjectListAdd (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 interfaceObjectList<K>- Overrides:
addElementsin classAbstractObjectList<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:ObjectListSet (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 interfaceObjectList<K>- Overrides:
setElementsin classAbstractObjectList<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:ObjectListSorts 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 interfaceObjectList<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:ObjectListSorts 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 interfaceObjectList<K>- Implementation Specification:
- Always throws
UnsupportedOperationExceptionas this is an immutable type.
-
-