Kotlin 四大容器Set,Array,List,Map

111 阅读3分钟

在做Kotlin 的开发中,数据结构的使用使我们操作程序的基础,在Kotlin 中有四种重要的容器,分别为ArraySetListMap,如果之前有接触过其他的语言编程的话,那么对这四种容器应该是非常熟悉的。

我们简单的介绍一下Set,叫做集合,跟我们数学里学到的集合概念差不多,Array 之前在说数组的时候就有提到过,是用来建立数组的。List为链表,这是在数据结构中,特别重要的一个概念。Map为字典,key-value键值对,一一对应,如同我们的字典一样。

在这些容器中,有些是共同的特性,有些是每个类型中特有的,我们先把特有的介绍一下,再来说说他们之间的共性。

Kotlin中,容器为两大类,一类是不可变容器,一类是可变容器。可变容器在不可变容器的前面加上Mutable。为什么要分为这样,这也许是为了运行速度。

在这里插入图片描述

去重可以集合set

在统计中,在统计日活是需要把重复的人员过滤掉,这时候使用集合set那就是在适合不够了,他自动的帮我们过滤掉重复的人员。

        var people:MutableSet<String> = mutableSetOf("user1","user2")

        people.add("user3")
        people.add("user1")

        people.forEach { println(it) }

我们定义了MutableSet<String>people 他可以用来存放用法,一开始有两个用户,后来又来了两个,但是user1 重复了。

这时候输出的也是三个用户:

I/System.out: user1
I/System.out: user2
I/System.out: user3

集合set 还有一个用处就是用来做交集,在统计中可以用来统计同时使用两个功能的用户。

        var feature1 :MutableSet<String> = mutableSetOf("user1","user2","user3")
        var feature2 :MutableSet<String> = mutableSetOf("user2","user3","user4")

        var all = feature1.intersect(feature2)

        all.forEach { println(it) }

用户 1,2,3用了功能1,用户2,3,4用了功能2,那么同时用了功能1和功能2的有哪些用户了,这就是用集合来进行交集计算。

I/System.out: user2
I/System.out: user3

常见的容器遍历操作

这是容器中都可以用的功能,对一个容器进行遍历操作是常见的事情。

  • 1.for-in循环

这是c语言的一种常见形式,有点变形,但用法想法是一样的。

        var array1:Array<Int> = arrayOf(1,2,2,3)

        for(item in array1){
            println(item.toString())
        }

打印的结果为:

I/System.out: 1
I/System.out: 2
I/System.out: 2
I/System.out: 3

  • 2.forEach遍历

forEach 的遍历方法,和其他语言相比还是有点不用的,KotlinforEach 直接是变量的方法,这还是挺少见的。

        var array1:Array<Int> = arrayOf(1,2,2,3)

        for(item in array1){
            array1.forEach { println(it) }
        }

打印的结果为:

I/System.out: 1
I/System.out: 2
I/System.out: 2
I/System.out: 3

这里又见it 关键变量,在Kotlin 中,如果变量中的方法带{},那么一定有一个隐藏变量 it 来指代它,这个它是谁要看方法而定。

对于map 定义keyvalue的时候用的是关键字to,其实这样不如用:方便。

        var map1:MutableMap<String,Int> = mutableMapOf("tomato" to 1,"apple" to 2)

        map1.forEach { println(it.key + ": " + it.value.toString()) }

  • 3.List的特殊遍历方法

List是个队列,有序标方法,我们可以用序标的方式进行访问它。set 是不能用这种方式的,因为他没有序标。

        var list1:MutableList<String> = mutableListOf("user1","user2","user3")

        for(i in list1.indices){
            println(list1[1])
        }

打印结果如下:

I/System.out: user1
I/System.out: user2
I/System.out: user3

排序

如果我们相对一个容器进行排序的话,最好是用List或者Mapset 是不能用来排序的。

        var list2:MutableList<Int> = mutableListOf(4,5,1,2,6,89,34)

        list2.sort()

        list2.sortBy { -it }

sort为升序排序,sortBy 为自定义排序。

小结

这是 对于 Kotlin 中容器的一些使用的方法,在项目中我们可以选择自己需要的容器类型,不同的容器有不同的作用。

Kotlin 引入的it的关键字,起到了很好的作用,简化了很多编程的过程。

本文转自 blog.csdn.net/weixin_4042…,如有侵权,请联系删除。