Collections
See:
fun testList() {
val a = mutableListOf(1, 2, 3)
println(a.javaClass) // class java.util.ArrayList
/*
for((i, v) in a.withIndex()) {
check(i + 1 == v)
}
*/
val b: List<Int> = a // view of a, no data is copied
a[0] = 10 // b is also changed since b is a view of a
check(b[0] == 10)
check(a.first() == a[0])
check(a.last() == a[a.size - 1])
check(a.count() == a.size)
check(10 in a)
check(11 !in a)
// append
a.add(20)
check(a.size == 4) // now there are 4 elements
check(b.size == 4) // size of b is also changed
check(a.last() == 20)
a.add(1, 100) // at index 1, insert 100
check(a[1] == 100)
check(a[2] == 2)
a.add(2)
a.remove(2) // remove the first occurrence of 2
check(a.last() == 2)
}
fun testSet() {
val a = mutableSetOf(1, 0, 2)
println(a.javaClass) // class java.util.LinkedHashSet
println(a)
check(0 in a)
check(3 !in a)
check(a.count() == 3)
check(a.size == 3)
// remove a elment
a.remove(0)
check(0 !in a)
a.add(0)
check(0 in a)
}
fun testMap() {
val a: MutableMap<Int, String> = mutableMapOf(0 to "zero", 1 to "one", 2 to "two")
println(a.javaClass) // class java.util.LinkedHashMap
check(a.count() == 3)
check(a[0] == "zero")
check(a.containsKey(0))
a.remove(0)
check(0 !in a)
check(a.containsKey(0) == false)
a.put(0, "zero") // equivalent to a[0] = "zero"
check(0 in a)
check(a.containsKey(0))
}
fun main() {
testList()
testSet()
testMap()
}