PrefixSharingList

class PrefixSharingList<E> : AbstractList<E>

This is an implementation of an immutable List for which append, the non-destructive append operation, takes constant time. There is also a withoutLast operation for producing a list with its rightmost element removed. Iterating over the entire list takes linear time, and does not use recursion.

The implementation should be thread-safe if the lists that are supplied as prefixes are themselves thread-safe. Do not change any of those lists after constructing PrefixSharingLists from them.

Author

Mark van Gulik

Parameters

E

The type of elements in the list.

Types

Link copied to clipboard
object Companion

Functions

Link copied to clipboard
open override fun add(element: E): Boolean
open override fun add(index: Int, element: E)
Link copied to clipboard
open override fun addAll(elements: Collection<E>): Boolean
open override fun addAll(index: Int, elements: Collection<E>): Boolean
Link copied to clipboard
open override fun clear()
Link copied to clipboard
open operator override fun contains(element: @UnsafeVariance E): Boolean
Link copied to clipboard
open override fun containsAll(elements: Collection<E>): Boolean
Link copied to clipboard
open operator override fun equals(other: Any?): Boolean
Link copied to clipboard
open fun forEach(p0: Consumer<in E>)
Link copied to clipboard
open operator override fun get(index: Int): E
Link copied to clipboard
open override fun hashCode(): Int
Link copied to clipboard
open override fun indexOf(element: E): Int
Link copied to clipboard
open override fun isEmpty(): Boolean
Link copied to clipboard
open operator override fun iterator(): MutableIterator<E>
Link copied to clipboard
open override fun lastIndexOf(element: E): Int
Link copied to clipboard
open override fun listIterator(): MutableListIterator<E>
open override fun listIterator(index: Int): MutableListIterator<E>
Link copied to clipboard
open fun parallelStream(): Stream<E>
Link copied to clipboard
open override fun remove(element: E): Boolean
Link copied to clipboard
open override fun removeAll(elements: Collection<E>): Boolean
Link copied to clipboard
open override fun removeAt(p0: Int): E
Link copied to clipboard
open fun removeIf(p0: Predicate<in E>): Boolean
Link copied to clipboard
open fun removeRange(p0: Int, p1: Int)
Link copied to clipboard
open fun replaceAll(p0: UnaryOperator<E>)
Link copied to clipboard
open override fun retainAll(elements: Collection<E>): Boolean
Link copied to clipboard
open operator override fun set(index: Int, element: E): E
Link copied to clipboard
open fun sort(p0: Comparator<in E>)
Link copied to clipboard
open override fun spliterator(): Spliterator<E>
Link copied to clipboard
open fun stream(): Stream<E>
Link copied to clipboard
open override fun subList(fromIndex: Int, toIndex: Int): MutableList<E>
Link copied to clipboard
open fun toArray(): Array<Any>
open fun <T : Any> toArray(p0: Array<T>): Array<T>
open fun <T : Any> toArray(p0: IntFunction<Array<T>>): Array<T>
Link copied to clipboard
open override fun toString(): String

Properties

Link copied to clipboard
val modCount: Int
Link copied to clipboard
open override val size: Int

The size of this list.