Kotlin 集合

Kotlin 集合

与Java集合类似,Kotlin 也引入了集合的概念。一个集合通常包含许多相同类型的对象,集合中的这些对象称为元素或项。 Kotlin 标准库提供了一组丰富的集合管理工具。

集合类型

在 Kotlin 中,集合分为两种形式。

1.不可变集合
2.可变集合

1. 不可变集合

这意味着它仅支持只读功能并且不能修改其元素。不可变集合及其对应的方法有:

  • 列表– listOf() 和 listOf()
  • 集合– setOf()
  • 地图– mapOf()

列表——它是一个有序集合,我们可以通过使用索引来访问元素或项目——定义每个元素位置的整数。元素可以在列表中重复任意次数。我们不能在不可变列表中执行添加或删除操作。

Kotlin 程序演示不可变列表:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//  Kotlin
// An example for immutable list
fun main(args: Array) {
val immutableList = listOf("Mahipal","Nikhil","Rahul")
// gives compile time error
// immutableList.add = "Praveen"
for(item in immutableList){
println(item)
}
}

输出内容:
Mahipal
Nikhil
Rahul



fun main(args: Array) {
// initialize with duplicate values
// but output with no repetition
var immutableSet = setOf(6,9,9,0,0,"Mahipal","Nikhil")
// gives compile time error
// immutableSet.add(7)
for(item in immutableSet){
println(item)
}
}

输出内容:
6
9
0
Mahipal
Nikhil

// Java
// An example for immutable map
fun main(args : Array) {
var immutableMap = mapOf(9 to "Mahipal",8 to "Nikhil",7 to "Rahul")
// gives compile time error
// immutableMap.put(9,"Praveen")
for(key in immutableMap.keys){
println(immutableMap[key])
}
}

输出内容:
Mahipal
Nikhil
Rahul

Set - 它是无序元素的集合,也不支持重复元素。它是独特元素的集合。通常,集合元素的顺序没有显着影响。我们不能执行添加或删除操作,因为它是一个不可变的 Set。

演示不可变集的 Kotlin 程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
fun main(args: Array) {
// initialize with duplicate values
// but output with no repetition
var immutableSet = setOf(6,9,9,0,0,"Mahipal","Nikhil")
// gives compile time error
// immutableSet.add(7)
for(item in immutableSet){
println(item)
}
}

输出内容:
6
9
0
Mahipal
Nikhil

Map – Map 键是唯一的,每个键只保存一个值,它是一组键值对。每个键都映射到一个值。值可以是重复的,但键应该是唯一的。地图用于存储两个对象之间的逻辑连接,例如,学生 ID 及其姓名。由于它是不可变的,它的大小是固定的,并且它的方法支持只读访问。

Kotlin 程序演示不可变映射:

// An example for immutable map
fun main(args : Array) {
var immutableMap = mapOf(9 to "Mahipal",8 to "Nikhil",7 to "Rahul")
// gives compile time error
// immutableMap.put(9,"Praveen")
for(key in immutableMap.keys){
println(immutableMap[key])
}
}
输出内容:
Mahipal
Nikhil
Rahul

2. 可变集合

它支持读取和写入功能。可变集合及其对应的方法有:

列表– mutableListOf()、arrayListOf() 和 ArrayList
集合——mutableSetOf()、hashSetOf()
映射– mutableMapOf()、hashMapOf() 和 HashMap

列表——由于可变列表支持读写操作,列表中声明的元素可以被删除或添加。

Kotlin 程序演示可变列表:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
fun main(args : Array) {
var mutableList = mutableListOf("Mahipal","Nikhil","Rahul")
// we can modify the element
mutableList[0] = "Praveen"
// add one more element in the list
mutableList.add("Abhi")
for(item in mutableList){
println(item)
}
}

输出内容:
Praveen
Nikhil
Rahul
Abhi

//Set – 可变 Set 支持读取和写入功能。我们可以轻松地从集合中添加或删除元素,它将保留元素的顺序。

Kotlin 程序演示可变集:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
fun main(args: Array) {
var mutableSet = mutableSetOf(6,10)
// adding elements in set
mutableSet.add(2)
mutableSet.add(5)
for(item in mutableSet){
println(item)
}
}

输出内容:
6
10
2
5


//Map – 它是可变的,因此它支持 put、remove、clear 等功能。

Kotlin 程序来演示可变映射。

fun main(args : Array) {
var mutableMap = mutableMapOf(1 to "Mahipal",2 to "Nikhil",3 to "Rahul")
// we can modify the element
mutableMap.put(1,"Praveen")
// add one more element in the list
mutableMap.put(4,"Abhi")
for(item in mutableMap.values){
println(item)
}
}

输出内容:
Praveen
Nikhil
Rahul
Abhi

Kotlin语言中 集合的api中有很多强大的功能

shuffled()的函数可以对集合进行洗牌(类似于扑克牌的洗牌),这样吧每次可以获取到不同的数据,可以很容易实现类似于首页随机推荐几条数据的功能。

1
2
3
4
5
6
7
8

//运行以下函数
fun main(args:Array<String>){
val list = mutableListOf<String>("1","2","3","4","5")
list.shuffled().take(3).forEach {
print(it.toString())
}
}