在做Kotlin 的开发中,数据结构的使用使我们操作程序的基础,在Kotlin 中有四种重要的容器,分别为Array,Set,List和Map,如果之前有接触过其他的语言编程的话,那么对这四种容器应该是非常熟悉的。
我们简单的介绍一下Set,叫做集合,跟我们数学里学到的集合概念差不多,Array 之前在说数组的时候就有提到过,是用来建立数组的。List为链表,这是在数据结构中,特别重要的一个概念。Map为字典,key-value键值对,一一对应,如同我们的字典一样。
在这些容器中,有些是共同的特性,有些是每个类型中特有的,我们先把特有的介绍一下,再来说说他们之间的共性。
在Kotlin中,容器为两大类,一类是不可变容器,一类是可变容器。可变容器在不可变容器的前面加上Mutable。为什么要分为这样,这也许是为了运行速度。

在统计中,在统计日活是需要把重复的人员过滤掉,这时候使用集合set那就是在适合不够了,他自动的帮我们过滤掉重复的人员。
var people:MutableSet<String> = mutableSetOf("user1","user2")
people.add("user3")
people.add("user1")
people.forEach { println(it) }
我们定义了MutableSet的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
这是容器中都可以用的功能,对一个容器进行遍历操作是常见的事情。
这是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
forEach 的遍历方法,和其他语言相比还是有点不用的,Kotlin 中forEach 直接是变量的方法,这还是挺少见的。
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 定义key和value的时候用的是关键字to,其实这样不如用:方便。
var map1:MutableMap<String,Int> = mutableMapOf("tomato" to 1,"apple" to 2)
map1.forEach { println(it.key + ": " + it.value.toString()) }
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或者Map,set 是不能用来排序的。
var list2:MutableList<Int> = mutableListOf(4,5,1,2,6,89,34)
list2.sort()
list2.sortBy { -it }
sort为升序排序,sortBy 为自定义排序。
这是 对于 Kotlin 中容器的一些使用的方法,在项目中我们可以选择自己需要的容器类型,不同的容器有不同的作用。
在Kotlin 引入的it的关键字,起到了很好的作用,简化了很多编程的过程。