SortedBinaryTreeNode

@Serializable
class SortedBinaryTreeNode<T>(val data: T, comparator: Comparator<T>) : Iterable<SortedBinaryTreeNode<T>> (source)

Constructors

Link copied to clipboard
constructor(data: T, comparator: Comparator<T>)

Types

Link copied to clipboard
object Companion

Properties

Link copied to clipboard
val data: T

Functions

Link copied to clipboard

Will add subnode in tree if there are no any node with newData

Link copied to clipboard
suspend fun <T> Iterable<Deferred<T>>.awaitFirst(cancelOthers: Boolean = true): T

Trying to Deferred.await on all thiss. The first Deferred completed its work will interrupt all others awaits and, if cancelOthers passed as true (by default), will also cancel all the others Deferreds

suspend fun <T> Iterable<Deferred<T>>.awaitFirst(scope: CoroutineScope, cancelOnResult: Boolean = true): T

Trying to Deferred.await on all thiss. The first Deferred completed its work will interrupt all others awaits and, if cancelOnResult passed as true (by default), will also cancel all the others Deferreds

Link copied to clipboard
suspend fun <T> Iterable<Deferred<T>>.awaitFirstWithDeferred(scope: CoroutineScope, cancelOnResult: Boolean = true): Pair<Deferred<T>, T>

Trying to Deferred.await on all thiss. The first Deferred completed its work will interrupt all others awaits and, if cancelOnResult passed as true (by default), will also cancel all the others Deferreds

Link copied to clipboard
fun <T> Iterable<T>.calculateDiff(other: Iterable<T>, strictComparison: Boolean = false): Diff<T>
fun <T> Iterable<T>.calculateDiff(other: Iterable<T>, comparisonFun: (T?, T?) -> Boolean): Diff<T>

Calculating Diff object

Link copied to clipboard
inline fun <T> Iterable<T>.calculateStrictDiff(other: Iterable<T>): Diff<T>

This method call calculateDiff with strict mode enabled

Link copied to clipboard
suspend fun <T> SortedBinaryTreeNode<T>.contains(data: T): Boolean
Link copied to clipboard
inline fun <T> Iterable<T>.diff(other: Iterable<T>, strictComparison: Boolean = false): Diff<T>
inline fun <T> Iterable<T>.diff(other: Iterable<T>, noinline comparisonFun: (T?, T?) -> Boolean): Diff<T>
Link copied to clipboard
open operator override fun equals(other: Any?): Boolean
Link copied to clipboard
Link copied to clipboard
suspend fun <T> SortedBinaryTreeNode<T>.findNodesInRange(from: T, to: T, fromInclusiveMode: Boolean, toInclusiveMode: Boolean): Set<SortedBinaryTreeNode<T>>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
fun <T> Iterable<T?>.firstNotNull(): <Error class: unknown class>
Link copied to clipboard
suspend fun getLeft(): T?
Link copied to clipboard
Link copied to clipboard
suspend fun getRight(): T?
Link copied to clipboard
Link copied to clipboard
open override fun hashCode(): Int
Link copied to clipboard
suspend fun <O> Iterable<DeferredAction<*, O>>.invokeFirstOf(scope: CoroutineScope, cancelOnResult: Boolean = true): O
Link copied to clipboard
suspend fun <T, O> Iterable<Deferred<T>>.invokeOnFirst(scope: CoroutineScope, cancelOnResult: Boolean = true, callback: suspend (T) -> O): O
Link copied to clipboard
open operator override fun iterator(): Iterator<SortedBinaryTreeNode<T>>

This Iterator will run from less to greater values of nodes starting the dev.inmo.micro_utils.coroutines.collections.SortedBinaryTreeNode-receiver. Due to non-suspending nature of iterator builder, this Iterator DO NOT guarantee consistent content due to iterations. It means, that tree can be changed during to iteration process

Link copied to clipboard
suspend fun Iterable<Job>.joinFirst(cancelOthers: Boolean = true): Job
suspend fun Iterable<Job>.joinFirst(scope: CoroutineScope, cancelOthers: Boolean = true): Job

Trying to Job.join on all thiss. The first Job completed its work will interrupt all others joins and, if cancelOthers passed as true (by default), will also cancel all the others Jobs

Link copied to clipboard
inline fun <I> Iterable<I>.joinTo(separator: I? = null, prefix: I? = null, postfix: I? = null): List<I>
inline fun <I> Iterable<I>.joinTo(separatorFun: (I) -> I?, prefix: I? = null, postfix: I? = null): List<I>
inline fun <I, R> Iterable<I>.joinTo(separator: R? = null, prefix: R? = null, postfix: R? = null, transform: (I) -> R?): List<R>
inline fun <I, R> Iterable<I>.joinTo(separatorFun: (I) -> R?, prefix: R? = null, postfix: R? = null, transform: (I) -> R?): List<R>
Link copied to clipboard
inline fun <T, R> Iterable<T>.mapNotNullA(transform: (T) -> R?): List<R>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Will remove (detach) node from tree starting with this

Link copied to clipboard
suspend fun size(): Int
Link copied to clipboard
open override fun toString(): String
Link copied to clipboard
fun <T> Iterable<T>.withReplaced(t: T, block: (T) -> T): List<T>
Link copied to clipboard
fun <T> Iterable<T>.withReplacedAt(i: Int, block: (T) -> T): List<T>