之前讲了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 = arrayOf("hello","world")
看到字符串可以这样声明,那其它基本类型可不可以也这样呢?
var my_int : Array = arrayOf(1,2,3)
答案是可以的,这里和java中ArrayList很像
我们知道在java中获取一个数组的长度是通过“.length”,遍历一个数组可以通过for循环,而在kotlin中获取数组的长度通过“.size”方法。接下来看看kotlin是如何遍历的:
var test_name: Array = 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 = str.split(",")
不同的地方大概就是在kotlin中split返回值是一个"List 其实这里的容器就是Java中的集合,我们知道java中有Set 、List和Map,Kotlin是兼容java中这些容器的,那在kotlin中这三大容器又是如何操作的? 上面提到kotlin中容器可分为可变容器和只读容器它们的关键字是(从左到右分别是容器类型、容器名称、容器的初始化方法): 只读集合 Set setOf 看一下kotlin中set集合的几种遍历方式: for in 迭代器iterator forEach遍历 到这里就可以很明了的看到其实kotlin对集合的遍历操作和Java是差不多的。 队列的遍历方式基本上是和上面集合是一样的,我们看看它有哪些特有的操作: sortBy :按照指定条件升序排序 用法如下 这里根据集合的长度来决定排序方式,当然这样写没有什么实际意义。 Map集合初始化的时候有两种方式一个是通过 to 关键字 一个是 Pair 它的三种遍历方式为: 不难看出基本用法还是比较简单的,也比较容易上手。kotlin中容器
首先和Java不同kotlin的每种容器又分为:只读容器和可变容器两种,只有可变容器才可以进行增删改查操作。
既然都是容器他们也有很多共同的API:
可变集合 MutableSet mutableSetOf
只读队列 List listOf
可变队列 MutableList mutableListOf
只读映射 Map mapOf
可变映射 MutableMap mutableMapOf集合
//for in 循环
var food:String = ""
val food_set: Set
//迭代器
val iterator=food_set.iterator()
while (iterator.hasNext()){
val item=iterator.next()
food = food+item
}
Log.e("TAG",food+"---")
food = ""
food_set.forEach { food= food+it }
队列
像get、add、removeAt和java一样。重点看一下MutableList的的sort操作。
sortByDescending: 按照指定条件降序排序 //队列排序
var my_list :MutableList
映射(Map)
//to 声明方式
var my_map: HashMap
// 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 }