Kotlin从零到精通—-第二章数据类型(2)

导读:本篇文章讲解 Kotlin从零到精通—-第二章数据类型(2),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、容器

  Kotlin号称全面兼容Java,于是Java的容器类仍可在Kotlin中正常使用,包括大家熟悉的队列ArrayList、映射HashMap等。不过Kotlin作为一门全新的语言,肯定有自己的容器类,不然哪天Java跟Kotlin分清界限,那就麻烦大了。下面主要对Kotlin容器进行详细说明。

1.容器的基本操作

与Java类似,Kotlin也拥有三类基本的容器,分别是集合Set、队列List、映射Map,然后每类容器又分作只读与可变两种类型,这是为了判断该容器能否进行增、删、改等变更操作。Kotlin对变量的修改操作很慎重,每个变量在定义的时候就必须指定能否修改,比如添加val修饰表示该变量不可修改,添加var修饰表示该变量允许修改。至于容器则默认为只读容器,如果需要允许修改该容器变量,就需要加上Mulable前缀形成新的容器,比如MutableSet表示可变集合,MutableList表示可变队列,MutableMap表示可变映射。只有可变的容器才能够对其内部元素进行增、删、改操作。

既然集合Set、队列List、映射Map三者都属于容器,那么它们必定拥有相同的容器方法,这些公共方法具体说明如下:

isEmpty : 判断该容器是否为空

isNotEmpty:判断该容器是否非空

clear:清空该容器

contains:判断该容器是否包含指定元素

iterator:获取容器的迭代器

count:获取该容器包含元素个数,也可以通过size属性获得元素数量

下面是一个初始化List队列的Kotlin代码例子:

val satellLites:List<String> = listOf(“水星” ,”火星” ,”木星” ,”天王星” ,'”土星”)

当然,不同的容器初始化方法有所区别,下列是各种容器的初始化方法

Kotlin的容器 容器名称 容器的初始化方法
只读集合 Set setOf
可变集合 MutableSet mutableSetOf
只读队列 List listOf
可变队列 MutableList mutableListOf
只读映射 Map mapOf
可变映射 MutableMap mutableMapOf

2.集合Set/MutableSet

集合是一种最简单的容器,它具有一下特性:

(1)容器内部的元素不按顺序排列,因此无法按照下标进行访问。

(2)容器内部的元素存在唯一性,通过哈希值效验是否存在相同的元素,若存在,则将其覆盖。

因为Set是只读集合,初始化赋值后便不可更改,所以元素变更的方法只适应与可变集合MutableSet,但MutableSet的可变更操作有一下限制:

(1)MutableSet的add方法仅仅往集合中添加元素,由于集合无序,因此不知道添加的具体位置

(2)MutableSet没有修改元素值的方法,一个元素一旦添加,就不可被修改

(3)MutableSet的remove方法用于删除指定元素,但无法删除某个位置的元素,这是因为集合内的元素不是按顺序排列的

3.for – in 循环

与Java类似,通过for语句加上in条件,即可轻轻松松依次取出集合中的所有元素,下面是运用for-in循环的代码例子:

val satellLites:Set<String> = setOf(“水星” ,”火星” ,”木星” ,”天王星” ,'”土星”)

btn_set_for.setOnClickListener{

var desc = “”

//使用for-in语句循环取出集合中每条记录

for (item in satellLites){

desc = “${desc}名称:${item}\n”

}

}

输出:名称:水星

           名称:火星

           名称:木星

           名称:天王星

          名称:土星

4.迭代器遍历

val satellLites:Set<String> = setOf(“水星” ,”火星” ,”木星” ,”天王星” ,'”土星”)

btn_set_for.setOnClickListener{

var desc = “”

val iterator = satellLites.iterator()

while(iterator.hasNext()){

val item = iterator.next()

desc = “${desc}名称:${item}\n”

}

}

输出:名称:水星

           名称:火星

           名称:木星

           名称:天王星

          名称:土星

5.forEach遍历

val satellLites:Set<String> = setOf(“水星” ,”火星” ,”木星” ,”天王星” ,'”土星”)

btn_set_for.setOnClickListener{

var desc = “”

satellLites.forEach{

desc = “${desc}名称:${it}\n”

}

}

输出:名称:水星

           名称:火星

           名称:木星

           名称:天王星

          名称:土星

注:结合以上有关Set/NUtableSet的用法说明,可以发现集合在实战中存在诸多不足,主要包括一下几点:
(1)集合不允许修改内部元素的值

(2)集合无法删除指定位置的元素

(3)不能通过下标获取指定位置的元素

同理队列List/MutableList用法相似不同点是:

(1)队列再添加元素时,会把元素添加到队列末尾

(2)队列可以根据set、get方法来替换、修改或获取某个指定位置的元素

(3)可以调用removeAt方法,删除指定位置的元素

(4)for-in循环、迭代器遍历、forEach遍历使用方法同上

同理映射Mapt/MutableMap用法相似不同点是:

(1)映射数据存储是按键值对方式存储的,当通过put方法添加元素时,映射会根据键名寻找相同元素,如果找到则替换,如果没找到则是添加

(2)remove方法是通过键名来删除数据的

(3)for-in循环、迭代器遍历、forEach遍历使用方法同上

小结:

通过本章的学习,读者应能掌握一下技能

(1)学会Kotlin对基本数据类型的变量定义以及变量之间的类型转换

(2)学会Kotlin对基本类型数组的声明方式以及数组变量的常见用法

(3)学会Kotlin对字符串的各种处理操作以及字符串模板的书写格式

(4)学会Kotlin对容器的声明方式以及增、删、改、查操作,包含集合、队列、映射三种基本容器

 

最后是交流公众号,大家可以关注一下

Kotlin从零到精通----第二章数据类型(2)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119181.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!