LinkedList

Implementation of the MutableList interface for PolyUI.

This is a doubly-linked list, with special "fast" methods:

these methods are all designed to avoid the allocation of an Iterator object, as otherwise PolyUI would create a lot of garbage.

this collection, unlike most of the collections in the Java Collections Framework, does not make any effort to check against concurrent modification. this allows you to do some "quirky" things, such as iterating over the list and removing elements at the same time.

Being a linked list, the random get and put operations are not the best. However, this operation is rare in PolyUI, so it's okay to use this.

Since

1.0.0

See also

Constructors

Link copied to clipboard
constructor(elements: Collection<T>)
constructor(vararg elements: T)
constructor()

Types

Link copied to clipboard
class LLIterator<T>(it: LinkedList<T>, startIndex: Int) : MutableListIterator<T>

iterator for LinkedList.

Link copied to clipboard
@ApiStatus.Internal
class Node<T>(var value: T, var next: LinkedList.Node<T>? = null, var prev: LinkedList.Node<T>? = null)

Properties

Link copied to clipboard
Link copied to clipboard
open override var size: Int
Link copied to clipboard

Functions

Link copied to clipboard
@ApiStatus.Internal
fun _remove(node: LinkedList.Node<T>)

Remove a node from a LinkedList. Note that if the node does not belong in this list, the behaviour is undefined.

Link copied to clipboard
open override fun add(element: T): Boolean
open override fun add(index: Int, element: T)
Link copied to clipboard
fun addAll(elements: Array<out T>)
open override fun addAll(elements: Collection<T>): Boolean
open override fun addAll(index: Int, elements: Collection<T>): Boolean
Link copied to clipboard
fun addIfAbsent(element: T & Any): Boolean
Link copied to clipboard
fun addOrReplace(element: T & Any): T?

Adds or replaces an element in the list. If the element is already in the list (using equals), it will be replaced, otherwise it will be added.

Link copied to clipboard
inline fun allAre(predicate: (T) -> Boolean): Boolean

Returns true if all elements match the given predicate.

Link copied to clipboard

Return this collection as an LinkedList. Note: if it is already a LinkedList, it will be returned as-is.

Link copied to clipboard
open override fun clear()
fun clear(unlink: Boolean)
Link copied to clipboard
inline fun clearing(function: (T) -> Unit): Boolean
Link copied to clipboard
open override fun clone(): LinkedList<T>
Link copied to clipboard
open operator override fun contains(element: T): Boolean
Link copied to clipboard
open override fun containsAll(elements: Collection<T>): Boolean
Link copied to clipboard
fun copy(): LinkedList<T>
Link copied to clipboard
fun cut(from: Int, to: Int)

Sublist this list in the range of from to to, discarding any elements outside of that range.

Link copied to clipboard
fun <T> MutableList<T>.ensureSize(size: Int, initializer: (Int) -> T): MutableList<T>

Ensure that this list is at least size elements long, and if it is not, add elements to it using the given initializer.

Link copied to clipboard
open operator override fun equals(other: Any?): Boolean
Link copied to clipboard
inline fun fastEach(action: (T) -> Unit)
Link copied to clipboard
inline fun fastEachIndexed(action: (Int, T) -> Unit)
Link copied to clipboard
inline fun fastEachReversed(action: (T) -> Unit)
Link copied to clipboard
inline fun fastRemoveIf(predicate: (T) -> Boolean): Boolean
Link copied to clipboard
inline fun fastRemoveIfIndexed(predicate: (Int, T) -> Boolean): Boolean
Link copied to clipboard
inline fun fastRemoveIfReversed(predicate: (T) -> Boolean): Boolean
Link copied to clipboard
inline fun first(): T
inline fun first(predicate: (T) -> Boolean): T
Link copied to clipboard
inline fun firstOrNull(): T?
Link copied to clipboard
open fun forEach(p0: Consumer<in T>)
Link copied to clipboard
open operator override fun get(index: Int): T
Link copied to clipboard
open override fun hashCode(): Int
Link copied to clipboard
open override fun indexOf(element: T): Int
Link copied to clipboard
open override fun isEmpty(): Boolean
Link copied to clipboard
open operator override fun iterator(): MutableListIterator<T>
Link copied to clipboard
inline fun last(): T
Link copied to clipboard
open override fun lastIndexOf(element: T): Int
Link copied to clipboard
inline fun lastOrNull(): T?
Link copied to clipboard
open override fun listIterator(): MutableListIterator<T>
open override fun listIterator(index: Int): MutableListIterator<T>
Link copied to clipboard
inline fun <T, R> Collection<T>.mapToArray(transform: (T) -> R): Array<R>
inline fun <T, R> LinkedList<T>.mapToArray(transform: (T) -> R): Array<R>

Perform the given transform on every element in this list, and return a new array with the results.

Link copied to clipboard
open fun parallelStream(): Stream<T>
Link copied to clipboard
open override fun remove(element: T): Boolean
Link copied to clipboard
open override fun removeAll(elements: Collection<T>): Boolean
Link copied to clipboard
open override fun removeAt(index: Int): T
Link copied to clipboard
open fun removeIf(p0: Predicate<in T>): Boolean
Link copied to clipboard
open fun replaceAll(p0: UnaryOperator<T>)
Link copied to clipboard
open override fun retainAll(elements: Collection<T>): Boolean
Link copied to clipboard
open operator override fun set(index: Int, element: T): T
Link copied to clipboard
open fun sort(p0: Comparator<in T>)
Link copied to clipboard
open override fun spliterator(): Spliterator<T>
Link copied to clipboard
open fun stream(): Stream<T>
Link copied to clipboard
open override fun subList(fromIndex: Int, toIndex: Int): MutableList<T>
Link copied to clipboard
open fun <T : Any> toArray(p0: IntFunction<Array<T>>): Array<T>
Link copied to clipboard
open override fun toString(): String