Kotlin---集合与遍历

2018-11-01  本文已影响407人  None_Ling

介绍

同样在Kotlin中会有List、Map、Set,而与Java中数据结构大多相同,也略有区别。Kotlin中的集合分为可变集合与不可变集合。

List及其遍历

Kotlin的List<E>接口只提供了sizegetindexOf等接口。所以我们在写代码之前需要先知道这个List使用的时候会变还是不会变。

创建可变与不可变的List

在Kotlin中都是通过标准库来创建集合类,例如:

class TestKotlin {

    fun function() {
        // 创建MutableList可以继续添加修改元素
        var mutableList: MutableList<Int> = mutableListOf(1, 2)
        mutableList.add(3)
        mutableList.remove(4)
        // 创建List不能添加和删除只能遍历
        var immutableList: List<Int> = listOf(1, 2)
    }
}

List的遍历

在Kotlin中的遍历和Groovy一样,都可以使用foreach闭包来完成,也可以使用in关键字来实现

class TestKotlin {

    fun function() {
        var mutableList: MutableList<Int> = mutableListOf(1, 2, 3, 4)
        mutableList.forEach {
            println("Mutable List Elements:$it")
        }

       var mutableList: MutableList<Int> = mutableListOf(1, 2)
        for (value in mutableList) {
            print("value:$value")
        }
    }
}

而过滤List中的部分数据也可以通过闭包来实现,通过filter,我们过滤了小于1的元素。而通过first,我们会找到第一个等于3的元素。

class TestKotlin {

    fun function() {
        var mutableList: MutableList<Int> = mutableListOf(1, 2, 3, 4)
        var filtedList: List<Int> = mutableList.filter {
            it > 1
        }
        var first = mutableList.first {
            it == 3
        }
    }
}

在Kotlin的闭包中,可以使用很多方式来指定参数,如果没有指定参数的话,默认会有一个it参数来代表闭包的参数。也就是我们也可以使用下面的方式来指定参数的名称。这也和Groovy一样。
var filtedList: List<Int> = mutableList.filter { element ->
element > 1
}

而对于排序我们可以通过指定comparator来完成

class TestKotlin {

    fun function() {
        var mutableList: MutableList<Int> = mutableListOf(1, 2, 3, 4)
        mutableList.sortWith(comparator = Comparator { x, y ->
            x - y
        })
    }
}

Map创建以及遍历

Map的创建以及访问、遍历和List有一些区别。

对于Map的创建可以通过to关键字来完成Key-Value的配对。而遍历可以使用forEach的方式,也可以通过in关键字来完成遍历

class TestKotlin {

    fun function() {
        var mutableMap: MutableMap<Int, String> = mutableMapOf(1 to "one", 2 to "two", 3 to "three")
        mutableMap.forEach {
            print("key:${it.key}...value:${it.value}")
        }
        for ((key, value) in mutableMap) {
            print("Key:$key....Value:$value")
        }
    }
}

而访问Map中的Key或者Value则可以类似于Python中字典的形式访问

class TestKotlin {

    fun function() {
        var mutableMap: MutableMap<Int, String> = mutableMapOf(1 to "one", 2 to "two", 3 to "three")
        print(mutableMap[1])
    }
}

Set创建以及遍历

List创建差不多,Set的创建与遍历、过滤如下

class TestKotlin {

    fun function() {
        var mutableSet: MutableSet<Int> = mutableSetOf(1, 2, 3)
        var immutableSet: Set<Int> = hashSetOf(1, 2, 3)
        mutableSet.forEach {
            println("$it")
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读