Skip to main content Skip to docs navigation

Data Structures

Document not reviewed yet, might be outdated. Please, let us know if you find something invalid here.
To access this functionality you can include the: com.soywiz.korge:korge-foundation:5.1.0 artifact from maven central. All the functionality yields in the korlibs.datastructure package .
On this page

KDS: Data Structures

Kds is a Data Structure library for Multiplatform Kotlin. It includes a set of optimized data structures written in Kotlin Common so they are available in JVM, JS and future multiplatform targets. Those structures are designed to be allocation-efficient and fast, so Kds include specialized versions for primitives like Int or Double.

Pages

    Some samples:

    // Case Insensitive Map
    val map = mapOf("hELLo" to 1, "World" to 2).toCaseInsensitiveMap()
    println(map["hello"])
    
    // BitSet
    val array = BitSet(100) // Stores 100 bits
    array[99] = true
    
    // TypedArrayList
    val v20 = intArrayListOf(10, 20).getCyclic(-1)
    
    // Deque
    val deque = IntDeque().apply {
        addFirst(n)
        removeFirst()
        addLast(n)
    }
    
    // CacheMap
    val cache = CacheMap<String, Int>(maxSize = 2).apply {
        this["a"] = 1
        this["b"] = 2
        this["c"] = 3
        assertEquals("{b=2, c=3}", this.toString())
    }
    
    // IntIntMap
    val m = IntIntMap().apply {
        this[0] = 98
    }
    
    // Pool
    val pool = Pool { Demo() }
    pool.alloc { demo ->
        println("Temporarilly allocated $demo")
    }
    
    // Priority Queue
    val pq = IntPriorityQueue()
    pq.add(10)
    pq.add(5)
    pq.add(15)
    assertEquals(5, pq.removeHead())
    
    // Extra Properties
    class Demo : Extra by Extra.Mixin() { val default = 9 }
    var Demo.demo by Extra.Property { 0 }
    var Demo.demo2 by Extra.PropertyThis<Demo, Int> { default }
    val demo = Demo()
    assertEquals(0, demo.demo)
    assertEquals(9, demo.demo2)
    demo.demo = 7
    assertEquals(7, demo.demo)
    assertEquals("{demo=7, demo2=9}", demo.extra.toString())
    
    // mapWhile
    val iterator = listOf(1, 2, 3).iterator()
    assertEquals(listOf(1, 2, 3), mapWhile({ iterator.hasNext() }) { iterator.next()})
    
    // And much more!
    
    Was this article useful?