Kotlin学习记录(四)—— 常用集合的使用
来源:互联网 发布:电脑笛子软件 编辑:程序博客网 时间:2024/04/30 22:50
接上篇: Kotlin学习记录(三)—— 子线程获取数据,实现简单ListView
集合在程序中的比例的很重的,Kotlin针对集合进行了更加简洁和有效的封装,这边文章就简单的介绍一下list,map,set这三个最常用集合的使用。
首先在Kotlin中,明确区分了集合的只读和可变。
Iterable接口声明了Kotlin中集合的通用方法,是最基本的接口。
MutableIterable接口继承Iterable,继承该接口的可以被迭代,可以再迭代期间移除元素。
Collection接口继承了Iterable,是集合通用的接口,但是只封装了只读的方法。
MutableCollection<E>接口继承了Iterable和Collection,封装了添加和移出的方法。
只是这样说还是云里雾里分不清,我们往下看,具体到代码:
list:
List是以线性方式管理物件集合,其可以很快的在任何地方进行增加和删除元素。List<E>接口继承Collection<E>接口,集合中可以存放重复对象。我们以代码的形式对其新建和函数进行使用说明:
val list= listOf<String>( //新建list "瓦洛兰", "德玛西亚", "班德尔城", "诺克萨斯", "祖安", "皮尔特沃夫", "艾欧尼亚", "李青", "阿利斯塔", "希维尔", "潘森", "伊泽瑞尔", "雷克顿", "古拉加斯", "奥利安娜", "崔斯塔娜", "泰达米尔", "马尔扎哈", "卡西奥佩娅", "艾尼维亚")
listOf()是Kotlin提供的创建list的函数,还有其他函数如:
具体对应了不同类型的集合的创建方式,就不一一列举了。针对list本身的一些操作函数如:
val count=list.size //集合中元素的数量 Intval isNull=list.isEmpty() //判断集合是否为空 Booleanval isContains=list.contains("李青") //判断集合中是否包含某种元素 Booleanval list2= listOf<String>( "瓦洛兰", "德玛西亚", "班德尔城", "诺克萨斯", "祖安")val isContainsAll=list.containsAll(list2) //判断集合中是否包含另一个集合 Booleanval indexStr=list.get(2) //查询集合中某个位置的元素值 <E>val index=list.indexOf("李青") //返回集合中某个元素首次出现的索引,如果不存在则返回-1 Intval lastIndex=list.lastIndexOf("李青") //返回集合中某个元素最后出现的索引,如果不存在则返回-1 Intval iterator=list.iterator() //返回该只读集合的元素迭代器 Iteratorval listIterator=list.listIterator() //返回一个集合的迭代器 ListIteratorval listIteratorIndex=list.listIterator(2) //从指定位置开始,返回一个集合的迭代器 ListIteratorval subList=list.subList(1,9) //返回集合中从1到9之间的集合 List
大家应该注意到,这些函数和方法都是只读的操作,并没有对list进行修改。list在Kotlin中也就是一个只读的集合,如果想对其进行修改,我们应该使用MutableList(这些只读的方法和函数是通用的),具体如下:
val mutableList= mutableListOf<String>( "伊泽瑞尔", "雷克顿", "古拉加斯", "奥利安娜", "崔斯塔娜", "泰达米尔", "马尔扎哈", "卡西奥佩娅", "艾尼维亚")val isAddOk=mutableList.add("祖安") //添加一个元素,返回true或false Booleanval isAddIndexOk=mutableList.add(2,"班德尔城") //在指定位置添加一个元素 Unitval isRemoveOk=mutableList.remove("李青") //移除集合中的一个元素,返回true或false Booleanval isRemoveAtOk=mutableList.removeAt(3) //移除指定为位置的元素 <E>val isAddAllOk=mutableList.addAll(list2) //添加另一个集合,返回true或false Booleanval isRemoveAllOk=mutableList.removeAll(list2) //移除一个集合,返回true或false Booleanval isSetOk=mutableList.set(2,"诺克萨斯") //替换指定位置的元素,返回原元素 <E>val isClearOk=mutableList.clear() //清空集合中得元素 Unit
val list4=mutableList.toList() //tolist是一个扩展函数,可以赋值list内的内容,返回一个只读的list
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 //获取元素数量val keys=map.keys //返回map中key的集合keys.forEach(::print) //输出Log:1,2,3,4val values=map.values //返回map中key的集合values.forEach(::print) //输出Log:伊泽瑞尔,雷克顿,古拉加斯,泰达米尔val entry=map.entries //返回键/值对集合entry.forEach{ println("key: ${it.key} , value: ${it.value}")} //输出key:1 , value:伊泽瑞尔 key:2...val isEmpty=map.isEmpty() //判断集合是否为空 Booleanval isContainsKey=map.containsKey(3) //判断集合中是否包含某个keyval isContainsValue=map.containsValue("雷克顿") //判断集合中是否包含某个valueval valueStr=map.get(2) //获取指定key的元素值,没有则返回null
上面说了map和list一样是只读的,可变的map需要使用mutableMap:
var mutableMapOf= mutableMapOf<Int,String>()mutableMapOf.putAll(map) //添加整个mapmutableMapOf.put(5,"拉克丝") //添加指定key的valuemutableMapOf.remove(2) //移除元素mutableMapOf.clear() //清空集合
很多情况下,函数和方法的名字和list的都是一样的。
set:
set集合中的元素是不会有重复的,并且是乱序的。创建set需要使用setOf(),mutableSetOf():
val set= setOf<String>( "祖安", "皮尔特沃夫")val mutableSet= mutableSetOf<String>( "阿利斯塔", "希维尔")
set的只读和修改方法和list及map都是一样的,大家可参考上面的内容,自行进行实验。(就让我偷个小懒吧)
Kotlin中的集合就简单介绍到这里,具体的和Java中集合的对比,可以自行研究下,今天介绍的这些已经能够满足大部分开发需求了。
Kotlin学习记录(五)—— 条件表达式的使用
- Kotlin学习记录(四)—— 常用集合的使用
- Kotlin学习记录(五)—— 条件表达式的使用
- Kotlin学习记录(二)—— Kotlin的变量、属性、类、构造函数、继承、方法
- Kotlin的使用记录
- kotlin学习笔记——集合及集合操作符
- kotlin学习笔记(四)
- kotlin学习笔记(四)
- kotlin学习笔记(四)
- 使用Kotlin开发android学习记录(一)
- Java集合类的学习(四)——Set
- Kotlin入门(四)——类
- 我的Kotlin学习之旅(四)
- Kotlin学习过程 四 Kotlin对Android而言的便利
- Kotlin学习(学习kotlin的日子)
- 一个Swifter的Kotlin学习——Kotlin 基本语法
- Kotlin学习笔记——使用databinding
- Kotlin学习笔记(十一)集合,区间
- Kotlin学习(一)—— IDEAIntelliJ IDEA的安装配置及Kotlin的环境部署
- 工程基础
- SITF特征提取和描述
- Hadoop--HDFS
- C++ explicit关键字详解
- 输出所有的最长公共子序列
- Kotlin学习记录(四)—— 常用集合的使用
- 奇虎360前端面试题
- 数据结构实践(一)—— 栈
- 欢迎使用CSDN-markdown编辑器
- React+Redux开发实战项目【美团App】,没你想的那么难
- 快速排序原理及Java实现
- JDBC更新数据库信息
- Dubbo的使用方法
- java swing