Kotlin中Set、Map、List 容器使用
前言之前讲了Kotlin中基本数据类型和String字符串拼接的一些基本用法,这里学习一下kotlin中数组和集合容器,其实挺想上来就用kotlin写页面的,毕竟那样有成就感,也不会枯燥无味,但是从java学过来深知基础的重要,所以还是一步一步来。数组声明kotlin中基本类型的数组声明,初始化一个整形数组:var int_arr: IntArray = intArrayOf(1, 2...
前言
之前讲了Kotlin中基本数据类型和String字符串拼接的一些基本用法,这里学习一下kotlin中数组和集合容器,其实挺想上来就用kotlin写页面的,毕竟那样有成就感,也不会枯燥无味,但是从java学过来深知基础的重要,所以还是一步一步来。
数组声明
kotlin中基本类型的数组声明,初始化一个整形数组:
var int_arr: IntArray = intArrayOf(1, 2, 3, 4, 5,6 )
可以看出来相对于java,kotlin:
kotlin 声明整形数组的关键字为:IntArray
kotlin分配一个常量数组通过intArrayof方法
从这可以看出kotlin声明数组的方式为:var 数组名称 :IntArray(数组类型) = intArrayof(…)
由这个整形数组我们可以看出kotlin声明数组的形式。但是kotlin中数据是不包含字符串数组的如果你要声明一个字符串数组:
var str :Array<String> = arrayOf("hello","world")
看到字符串可以这样声明,那其它基本类型可不可以也这样呢?
var my_int : Array<Int> = arrayOf(1,2,3)
答案是可以的,这里和java中ArrayList很像
数组遍历
我们知道在java中获取一个数组的长度是通过“.length”,遍历一个数组可以通过for循环,而在kotlin中获取数组的长度通过“.size”方法。接下来看看kotlin是如何遍历的:
var test_name: Array<String> = arrayOf("小米", "小马", "小张")
my_name.setOnClickListener {
var str: String = ""
var i: Int = 0
while (i < test_name.size) {
str = str + test_name[i] + "----"
i++
}
my_name.text = str
}
这里是通过while循环来给my_name 赋值其实和Java中的for循环很类似。
当然kotlin中的数组还有set和get方法如果想要取数组中的某个值或者设置某个值只需要
test_name.set(2, "小李子")//设置数组中某个位置的值
str = test_name.get(2)//获取数组中某个位置的值
字符串的分割、拼接
kotlin的分割拼接操作基本上和java相同的,替换:replace 查找 ** indexOf** 截取 ** substring**
var list:List<String> = str.split(",")
不同的地方大概就是在kotlin中split返回值是一个"List<String" 而在Java中是一个数组,其他的地方就需要实际开发中灵活运用了。
kotlin中容器
其实这里的容器就是Java中的集合,我们知道java中有Set 、List和Map,Kotlin是兼容java中这些容器的,那在kotlin中这三大容器又是如何操作的?
首先和Java不同kotlin的每种容器又分为:只读容器和可变容器两种,只有可变容器才可以进行增删改查操作。
既然都是容器他们也有很多共同的API:
- isEmpty:判断容器是否为空
- isNotEmpty:判断该容器是否非空
- clear 清空该容器
- contains 判断容器是否包含某元素
- iterator 迭代器
- count 获取容器长度
上面提到kotlin中容器可分为可变容器和只读容器它们的关键字是(从左到右分别是容器类型、容器名称、容器的初始化方法):
只读集合 Set setOf
可变集合 MutableSet mutableSetOf
只读队列 List listOf
可变队列 MutableList mutableListOf
只读映射 Map mapOf
可变映射 MutableMap mutableMapOf
集合
看一下kotlin中set集合的几种遍历方式:
for in
//for in 循环
var food:String = ""
val food_set: Set<String> = setOf("大米","小米","黑米","糯米")
for (item in food_set){
food = food+item
}
Log.e("TAG",food)
迭代器iterator
//迭代器
val iterator=food_set.iterator()
while (iterator.hasNext()){
val item=iterator.next()
food = food+item
}
Log.e("TAG",food+"---")
forEach遍历
food = ""
food_set.forEach { food= food+it }
到这里就可以很明了的看到其实kotlin对集合的遍历操作和Java是差不多的。
队列
队列的遍历方式基本上是和上面集合是一样的,我们看看它有哪些特有的操作:
像get、add、removeAt和java一样。重点看一下MutableList的的sort操作。
sortBy :按照指定条件升序排序
sortByDescending: 按照指定条件降序排序
用法如下
//队列排序
var my_list :MutableList<String> = mutableListOf("北京","上海","南京","山东")
my_list.sortBy { my_list.count() }//升序
my_list.sortByDescending { my_list.size }//降序
这里根据集合的长度来决定排序方式,当然这样写没有什么实际意义。
映射(Map)
Map集合初始化的时候有两种方式一个是通过 to 关键字 一个是 Pair
//to 声明方式
var my_map: HashMap<Int, String> = hashMapOf(1 to "one", 2 to "two", 3 to "three")
//Pair 声明方式
var my_pmap: HashMap<Int, String> = hashMapOf(Pair(1, "one"), Pair(2, "two"), Pair(3, "three"))
它的三种遍历方式为:
// for in
var desc = ""
for (item in my_map) {
desc = desc + item.key.toString() + "----" + item.value
}
Log.e("TAG", desc)
// 迭代器
val it = my_pmap.iterator()
while (it.hasNext()) {
val item = it.next()
desc = desc + item.key + "=====" + item.value
}
//forEach 遍历
my_pmap.forEach { key, vaule -> desc = desc + vaule + key }
不难看出基本用法还是比较简单的,也比较容易上手。
更多推荐
所有评论(0)