不积跬步无以至千里,不积小流无以成江海
先看看Kotlin中for循环的遍历
fun testList(){ var StringVal = "12_12_13_15_a_b_c_d_yu_er" var ssArray = StringVal.split("_") var ss01 = ssArray[0] var ss02 = ssArray[1] var size = ssArray.size println("ss01: $ss01") println("ss02: $ss02") println("size:$size") val items = listOf("apple", "banana", "kiwi") //迭代for循环 for (item in ssArray){ println("item: $item") } for (item in ssArray) println("item: $item") //循环体可以是一个代码块: for (item : String in ssArray ){ println("item: $item") } //通过索引进行遍历,for 可以循环遍历任何提供了迭代器的对象。 //如果你想要通过索引遍历一个数组或者一个 list //注意这种"在区间上遍历"会编译成优化的实现而不会创建额外对象。 for (i in ssArray.indices) { print(ssArray) } //这种"在区间上遍历"会编译成优化的实现而不会创建额外对象。或者你可以用库函数 withIndex: fun forbetween(index :Int,value : Objects){ for ((index,value) in ssArray.withIndex()){ println("the element at $index is $value") } } }
kotlin和Java中的集合工具类
Java中集合及其工具类 |
Kotlin中Java中集合及其工具类 |
List |
MutableList |
Set |
MutableSet |
Map |
MutableMap |
Collection |
MutableCollection |
List |
MutableList |
Set |
MutableSet |
Map |
MutableMap |
Collection |
MutableCollection |
Iterable |
MutableIterable |
,Kotlin针对集合进行了更加简洁和有效的封装
-
Iterable:父类。所有我们可以遍历一系列的都是实现这个接口。
-
MutableIterable:一个支持遍历的同时可以执行删除的Iterables。
-
Collection:这个类相是一个范性集合。我们通过函数访问可以返回集合的size、是否为空、是否包含一个或者一些item。这个集合的所有方法提供查询,因为connections是不可修改的。
-
MutableCollection:一个支持增加和删除item的Collection。它提供了额外的函数,比如add 、remove、clear等等。
-
List:可能是最流行的集合类型。它是一个范性有序的集合。因为它的有序,我们可以使用get函数通过position来访问。
-
MutableList:一个支持增加和删除item的List。
-
Set:一个无序并不支持重复item的集合。
-
MutableSet:一个支持增加和删除item的Set。
-
Map:一个key-value对的collection。key在map中是唯一的,也就是说不能有两对key是一样的键值对存在于一个map中。
-
MutableMap:一个支持增加和删除item的map。
比如: List是以线性方式管理物件集合,其可以很快的在任何地方进行增加和删除元素。List<E>接口继承Collection<E>接口,集合中可以存放重复对象。
对于接口的实现
Kotlin中可以这样写:
而在Java 中却不能这样写:
集合的创建
val list1 = listOf<Int>()
集合set:
一些常用的用法
set集合中的元素是不会有重复的,并且是乱序的。创建set需要使用setOf(),mutableSetOf():
val set= setOf<String>( "祖安", "皮尔特沃夫" ) val mutableSet= mutableSetOf<String>( "阿利斯塔", "希维尔" )
Map: Map是一个存放键和值的集合,每一个元素都包含键和值。Kotlin中Map和list一样,也分为只读和可变两种Map。
创建Map时需要调用mapOf(),mutableMapOf():
val map= mapOf<Int,String>( 1 to "伊泽瑞尔", 2 to "雷克顿", 3 to "古拉加斯", 4 to "泰达米尔" ) val hashMap= hashMapOf<Int,String>( 1 to "伊泽瑞尔", 2 to "雷克顿", 3 to "古拉加斯", 4 to "泰达米尔" )
map和hashMap的区别,这里就不说了,Java的基础
val count=map.size
上面说了map和list一样是只读的,可变的map需要使用mutableMap:
var mutableMapOf= mutableMapOf<Int,String>() mutableMapOf.putAll(map)
很多情况下,函数和方法的名字和list的都是一样的。
集合操作符
val list = listOf(1, 2, 3, 4, 5, 6) list.any {//只要集合中的任何一个元素满足条件(使得lambda表达式返回true),any函数就返回true it >= 0 } list.all {//集合中的全部元素都满足条件(使得lambda表达式返回true),all函数才返回true it >= 0 } list.none {//若集合中没有元素满足条件(使lambda表达式返回true),则none函数返回true it < 0 } list.count {//count函数的返回值为:集合中满足条件的元素的总数 it >= 0 }
累计
遍历
最大最小
过滤
排序&逆序
val list = listOf(1, 2, 3, 4, 5, 6) list.reversed()
合并&分解
val list = listOf(1, 2, 3, 4, 5, 6) val list2 = listOf(5, 6, 7, 8, 9, 0)
Kotlin集合转换为数组
当我们声明一个集合,可以把这个集合根据调用集合类相应的高阶函数来转换成相应的数组。集合类提供了toIntArray()、toDoubleArray()、toFloatArray()、toBetArray(),toTypedArray等高阶函数去处理。
Kotlin集合转换为数组
Kotlin数组转换为集合
Kotlin中,集合可分为不可变集合与可变集合。我们声明一个集合或者数组,可以转换成相应类型的集合。调用toXXX()转换成不可变集合。调用toMutableXXX()转换为可变集合。集合类提供了toList()、toMutableList()、toSet()、toMutableSet()、toHashSet()、toMap()等高阶函数去处理
例如:
Kotlin数组转换为集合
嗯,今天就提到这里,学习Kotlin还有很长的一段路走,一门新的语言需要一颗耐心,摒弃杂念,向前出发吧
推荐几个学习的地址:
官网文档:
http://kotlinlang.org/
runoob中文文档
http://www.runoob.com/kotlin/kotlin-loop-control.html
阅读更多
Kotlin开发之旅《一》— 初学者Kotlin基础必备
我的Android重构之旅:插件化篇
20+个很棒的Android开源项目
Kotlin已成为Android开发一级语言——这次你绝对不能错过
相信自己,没有做不到的,只有想不到的
欢迎关注我的微信公众号:终端研发部。一起 学习和 交流。在这里获得的不仅仅是技术! |