前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kotlin---集合与遍历

Kotlin---集合与遍历

作者头像
None_Ling
发布2018-12-05 14:55:53
3.2K0
发布2018-12-05 14:55:53
举报
文章被收录于专栏:Android相关Android相关

介绍

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

List及其遍历

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

创建可变与不可变的List

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

  • 创建可变List:通过mutableListOf(),返回MutableList对象
  • 创建不可变List:通过listOf(),返回List接口
代码语言:javascript
复制
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关键字来实现

代码语言:javascript
复制
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的元素。

代码语言:javascript
复制
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来完成

代码语言:javascript
复制
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关键字来完成遍历

代码语言:javascript
复制
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中字典的形式访问

代码语言:javascript
复制
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的创建与遍历、过滤如下

代码语言:javascript
复制
class TestKotlin {

    fun function() {
        var mutableSet: MutableSet<Int> = mutableSetOf(1, 2, 3)
        var immutableSet: Set<Int> = hashSetOf(1, 2, 3)
        mutableSet.forEach {
            println("$it")
        }
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.11.01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • List及其遍历
    • 创建可变与不可变的List
      • List的遍历
      • Map创建以及遍历
      • Set创建以及遍历
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档