1. Kotlin的集合类
Kotlin的集合类分为可变集合类和不可变集合类
2. 常用的三种集合类
主要有三种: List(列表),Set(集合),Map(映射)
- List容器中的元素以线性方式存储,元素是有序的排列,可以存放重复对象。
- Set集合中的元素无序且不能重复
- Map持有的是一个键值对(K - V)对象
3. 创建集合类
List列表分为只读不可变的List和可变的MutableList
val list = listOf<Int>(1,2,3,4,5,6);
var mutableList = mutableListOf<Int>();
Set集也分为不可变set和可变MutableSet
val set = setOf<Int>(1,2,3,4,5,6);
var mutableSet = mutableSetOf<Int>();
Map也分为只读Map和可变MutableMap
val map = mapOf<Int,String>(1 to "a",2 to "b",3 to "c");
val mutableMap = mutableMapOf<Int,String>();
4. 遍历集合中的元素
4.1 遍历元素
使用forEach()函数遍历
// List中的forEach
list.forEach {
println(it); // 1 2 3 4 5 6
}
// Set中的forEach
set.forEach {
println(it); // 1 2 3 4 5 6
}
// map中的forEach
map.forEach {
println("${it.key} - ${it.value}"); // 1 - a 2 - b 3 - c
}
当我们在遍历元素的同时,想获取元素的下标,可以使用forEachIndexed()函数
list.forEachIndexed { index, value ->
println("index = $index, value = $value"); // index = 0, value = 1 ...
}
set.forEachIndexed { index, value ->
println("index = $index,value = $value"); // index = 0, value = 1 ...
}
5. 映射函数
使用map函数,可以把集合中的元素,依次使用给定的转换函数,进行映射操作,元素映射之后的新值,会存入一个新的集合中,并返回这个新的集合
private fun listMap(): Unit {
val numberList = listOf(1,2,3,4,5,6);
val newNumberList = numberList.map { it -> it + 1 }
println(newNumberList); // [2, 3, 4, 5, 6, 7]
}
flatten()函数,可以把内层的嵌套List,平铺称为1层
// 传入List
val doubleList = numberList.map { it -> listOf(it + 2,it + 3,it + 4) }
println(doubleList); // [[3, 4, 5], [4, 5, 6], [5, 6, 7], [6, 7, 8], [7, 8, 9], [8, 9, 10]]
println(doubleList.flatten()); // [3, 4, 5, 4, 5, 6, 5, 6, 7, 6, 7, 8, 7, 8, 9, 8, 9, 10]
flatMap()函数是map函数和flatten的集合
// flatMap
val flatMapList = numberList.flatMap { it -> listOf(it * 2, it * 3, it * 4) }
println(flatMapList); //[2, 3, 4, 4, 6, 8, 6, 9, 12, 8, 12, 16, 10, 15, 20, 12, 18, 24]
6. 过滤函数
filter()函数
val studentList = listOf(
Student(1, "Jack", 18, 86),
Student(2, "Rose", 23, 75),
Student(3, "Alice", 25, 89)
);
val studentList1 = studentList.filter { it.age < 22 };
println(studentList1); // [Student(id = 1, name = Jack, age = 18, score = 86)]
filterIndexed()函数
val list = listOf<Int>(0,1,2,3,4,5,6);
val list1 = list.filterIndexed { index, it -> index % 2 == 0 && it > 3 }
println(list1); // [4, 6]
7. 排序函数
今天来聊下,List和Set中常用的两个排序函数。
reversed()
reversed()函数,是一个倒序函数,注意不是降序
val list = listOf(7, 5, 9, 8, 3, 1);
var revertList = list.reversed();
println(revertList); // [1, 3, 8, 9, 5, 7]
sorted()
sorted()函数,是一个升序函数,是从小往大排列的~
val list = listOf(7, 5, 9, 8, 3, 1);
val sortList = list.sorted();
println(sortList); // [1, 3, 5, 7, 8, 9]
8. 去重函数
如果想对一个一个列表进行去重,可以使用distinct()函数
val list = listOf(1, 2, 2, 3, 3, 3, 4, 4, 4, 4);
val distinctList = list.distinct();
println(distinctList); // [1, 2, 3, 4]
网友评论