Class ImmutableAbstractList<E>
- Type Parameters:
E
- the type of content of this List
- All Implemented Interfaces:
Serializable
,Iterable<E>
,RandomAccess
,ImmutableCollection<E>
,ImmutableList<E>
- Direct Known Subclasses:
ImmutableArrayList
,ImmutableVector
Copyright (c) 2016-2024 Delft University of Technology, Jaffalaan 5, 2628 BX Delft, the Netherlands. All rights reserved. See for project information https://djutils.org. The DJUTILS project is distributed under a three-clause BSD-style license, which can be found at https://djutils.org/docs/license.html.
- Author:
- Alexander Verbraeck, Peter Knoppers
- See Also:
-
Field Summary
Fields inherited from class org.djutils.immutablecollections.ImmutableAbstractCollection
copyOrWrap
-
Constructor Summary
ModifierConstructorDescriptionprotected
ImmutableAbstractList
(List<E> list, Immutable copyOrWrap) Construct an abstract immutable list. -
Method Summary
Modifier and TypeMethodDescriptionfinal boolean
Returnstrue
if this immutable collection contains the specified element.final boolean
containsAll
(Collection<?> c) Returnstrue
if this immutable collection contains all of the elements in the specified collection.final boolean
Returnstrue
if this immutable collection contains all of the elements in the specified immutable collection.boolean
Force to redefine equals for the implementations of immutable collection classes.final void
final E
get
(int index) Returns the element at the specified position in this immutable list.Returns the underlying collection of this immutable collection.int
hashCode()
Force to redefine hashCode for the implementations of immutable collection classes.final int
Returns the index of the first occurrence of the specified element in this immutable list, or -1 if this immutable list does not contain the element.final boolean
isEmpty()
Returnstrue
if this immutable collection contains no elements.final boolean
isWrap()
Return whether the internal storage is a wrapped pointer to the original collection.final ImmutableIterator<E>
iterator()
Returns an immutable iterator over the elements in this immutable collection.final int
Returns the index of the last occurrence of the specified element in this immutable list, or -1 if this immutable list does not contain the element.Returns a possibly parallelStream
with this collection as its source.final int
size()
Returns the number of elements in this immutable collection.final Spliterator<E>
Creates a Spliterator over the elements in this collection.stream()
Returns a sequentialStream
with this collection as its source.final Object[]
toArray()
Returns an array containing all of the elements in this immutable collection.final <T> T[]
toArray
(T[] a) Returns an array containing all of the elements in this immutable collection; the runtime type of the returned array is that of the specified array.final Collection<E>
Returns a modifiable copy of this immutable collection.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.djutils.immutablecollections.ImmutableCollection
isCopy
Methods inherited from interface org.djutils.immutablecollections.ImmutableList
subList, toList, toString
-
Constructor Details
-
ImmutableAbstractList
Construct an abstract immutable list. Make sure that the argument is a safe copy of the list or pointer to the list of the right type! Copying does not take place in the Abstract class!- Parameters:
list
- List<E>; a safe copy of the list, or pointer to the list to use for the immutable listcopyOrWrap
- Immutable; indicate whether the immutable is a copy or a wrap
-
-
Method Details
-
toCollection
Description copied from interface:ImmutableCollection
Returns a modifiable copy of this immutable collection.- Specified by:
toCollection
in interfaceImmutableCollection<E>
- Returns:
- a modifiable copy of this immutable collection.
-
getUnderlyingCollection
Description copied from class:ImmutableAbstractCollection
Returns the underlying collection of this immutable collection. In case of Immutable.WRAP, this will be the original collection. In case of IMMUTABLE.COPY, this will be the internally stored (mutable) copy of the collection.- Specified by:
getUnderlyingCollection
in classImmutableAbstractCollection<E>
- Returns:
- the underlying collection of this immutable collection.
-
size
public final int size()Description copied from interface:ImmutableCollection
Returns the number of elements in this immutable collection. If this immutable collection contains more thanInteger.MAX_VALUE
elements, returnsInteger.MAX_VALUE
.- Specified by:
size
in interfaceImmutableCollection<E>
- Returns:
- the number of elements in this immutable collection
-
isEmpty
public final boolean isEmpty()Description copied from interface:ImmutableCollection
Returnstrue
if this immutable collection contains no elements.- Specified by:
isEmpty
in interfaceImmutableCollection<E>
- Returns:
true
if this immutable collection contains no elements
-
contains
Description copied from interface:ImmutableCollection
Returnstrue
if this immutable collection contains the specified element. More formally, returnstrue
if and only if this immutable collection contains at least one elemente
such that(o==null ? e==null : o.equals(e))
.- Specified by:
contains
in interfaceImmutableCollection<E>
- Parameters:
o
- Object; element whose presence in this immutable collection is to be tested- Returns:
true
if this immutable collection contains the specified element
-
indexOf
Description copied from interface:ImmutableList
Returns the index of the first occurrence of the specified element in this immutable list, or -1 if this immutable list does not contain the element. More formally, returns the lowest indexi
such that(o==null ? get(i)==null : o.equals(get(i)))
, or -1 if there is no such index.- Specified by:
indexOf
in interfaceImmutableList<E>
- Parameters:
o
- Object; element to search for- Returns:
- the index of the first occurrence of the specified element in this immutable list, or -1 if this immutable list does not contain the element
-
lastIndexOf
Description copied from interface:ImmutableList
Returns the index of the last occurrence of the specified element in this immutable list, or -1 if this immutable list does not contain the element. More formally, returns the highest indexi
such that(o==null ? get(i)==null : o.equals(get(i)))
, or -1 if there is no such index.- Specified by:
lastIndexOf
in interfaceImmutableList<E>
- Parameters:
o
- Object; element to search for- Returns:
- the index of the last occurrence of the specified element in this immutable list, or -1 if this immutable list does not contain the element
-
toArray
Description copied from interface:ImmutableCollection
Returns an array containing all of the elements in this immutable collection. If this immutable collection makes any guarantees as to what order its elements are returned by its iterator, this method must return the elements in the same order.See java.util.Collection.toArray() for more details.
- Specified by:
toArray
in interfaceImmutableCollection<E>
- Returns:
- an array containing all of the elements in this immutable collection
-
toArray
public final <T> T[] toArray(T[] a) Description copied from interface:ImmutableCollection
Returns an array containing all of the elements in this immutable collection; the runtime type of the returned array is that of the specified array. If the immutable collection fits in the specified array, it is returned therein. Otherwise, a new array is allocated with the runtime type of the specified array and the size of this immutable collection.See java.util.Collection.toArray(T[]) for more details.
- Specified by:
toArray
in interfaceImmutableCollection<E>
- Type Parameters:
T
- the runtime type of the array to contain the immutable collection- Parameters:
a
- the array into which the elements of this immutable collection are to be stored, if it is big enough; otherwise, a new array of the same runtime type is allocated for this purpose.- Returns:
- an array containing all of the elements in this immutable collection
-
get
Description copied from interface:ImmutableList
Returns the element at the specified position in this immutable list.- Specified by:
get
in interfaceImmutableList<E>
- Parameters:
index
- int; index of the element to return- Returns:
- the element at the specified position in this immutable list
-
iterator
Description copied from interface:ImmutableCollection
Returns an immutable iterator over the elements in this immutable collection. There are no guarantees concerning the order in which the elements are returned (unless this immutable collection is an instance of some class that provides a guarantee). The ImmutableIterator is an Iterator where the remove() operation will throw an exception. -
forEach
-
spliterator
Description copied from interface:ImmutableCollection
Creates a Spliterator over the elements in this collection. Implementations should document characteristic values reported by the spliterator. See java.util.Collection for more information.- Specified by:
spliterator
in interfaceImmutableCollection<E>
- Specified by:
spliterator
in interfaceIterable<E>
- Returns:
- a
Spliterator
over the elements in this collection
-
containsAll
Description copied from interface:ImmutableCollection
Returnstrue
if this immutable collection contains all of the elements in the specified collection.- Specified by:
containsAll
in interfaceImmutableCollection<E>
- Parameters:
c
- Collection<?>; collection to be checked for containment in this immutable collection- Returns:
true
if this immutable collection contains all of the elements in the specified collection- See Also:
-
containsAll
Description copied from interface:ImmutableCollection
Returnstrue
if this immutable collection contains all of the elements in the specified immutable collection.- Specified by:
containsAll
in interfaceImmutableCollection<E>
- Parameters:
c
- ImmutableCollection<?>; immutable collection to be checked for containment in this immutable collection- Returns:
true
if this immutable collection contains all of the elements in the specified immutable collection- See Also:
-
stream
Description copied from interface:ImmutableCollection
Returns a sequentialStream
with this collection as its source.This method should be overridden when the
ImmutableCollection.spliterator()
method cannot return a spliterator that isIMMUTABLE
,CONCURRENT
, or late-binding. (SeeImmutableCollection.spliterator()
for details.)- Specified by:
stream
in interfaceImmutableCollection<E>
- Returns:
- a sequential
Stream
over the elements in this collection
-
parallelStream
Description copied from interface:ImmutableCollection
Returns a possibly parallelStream
with this collection as its source. It is allowable for this method to return a sequential stream.This method should be overridden when the
ImmutableCollection.spliterator()
method cannot return a spliterator that isIMMUTABLE
,CONCURRENT
, or late-binding. (SeeImmutableCollection.spliterator()
for details.)- Specified by:
parallelStream
in interfaceImmutableCollection<E>
- Returns:
- a possibly parallel
Stream
over the elements in this collection
-
isWrap
public final boolean isWrap()Description copied from interface:ImmutableCollection
Return whether the internal storage is a wrapped pointer to the original collection. If true, this means that anyone holding a pointer to this data structure can still change it. The users of the ImmutableCollection itself can, however, not make any changes.- Specified by:
isWrap
in interfaceImmutableCollection<E>
- Returns:
- boolean; whether the internal storage is a wrapped pointer to the original collection
-
hashCode
public int hashCode()Description copied from interface:ImmutableList
Force to redefine hashCode for the implementations of immutable collection classes.- Specified by:
hashCode
in interfaceImmutableCollection<E>
- Specified by:
hashCode
in interfaceImmutableList<E>
- Overrides:
hashCode
in classObject
- Returns:
- the calculated hashCode
-
equals
Description copied from interface:ImmutableList
Force to redefine equals for the implementations of immutable collection classes.- Specified by:
equals
in interfaceImmutableCollection<E>
- Specified by:
equals
in interfaceImmutableList<E>
- Overrides:
equals
in classObject
- Parameters:
obj
- Object; the object to compare this collection with- Returns:
- whether the objects are equal
-