Kotlin集合——List集合

List集合的最大特征就是集合元素都有对应的顺序索引。List集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。

一、声明和创建List集合

Kotlin提供了如下工具函数来创建List集合:

  • listOf():该函数返回不可变的List集合。该函数可接受0个或多个参数,这些参数将作为集合的元素。
  • listOfNotNull():该函数返回不可变的List集合。该函数与前一个函数的唯一区别是,该函数会自动去掉传入的一系列参数中的null值。
  • mutableListOf():该函数返回可变的MutableList集合。该函数可接受0个或多个参数,这些参数将作为集合的元素。
  • arrayListOf():该函数返回可变的ArrayList集合。该函数可接受0个或多个参数,这些参数将作为集合的元素。
    //创建不可变集合,返回值是List
var list1 = listOf("Java", "Kotlin", null, "Go")
println(list1)
println("listOf的返回对象的实际类型:${list1.javaClass}")
//创建不可变集合,返回值是list
var list2 = listOfNotNull("Java", "Kotlin", null, "Go")
println(list2)
println("listOfNotNull的返回对象的实际类型:${list2.javaClass}")
//创建可变集合,返回值是MutableList
var mutableList = mutableListOf("Java", "Kotlin", null, "Go")
println(mutableList)
println("mutableListOf的返回对象的实际类型:${mutableList.javaClass}")
//创建ArrayList集合
var arrayList = arrayListOf("Java", "Kotlin", null, "Go")
println(arrayList)
println("arrayListOf的返回对象的实际类型:${arrayList.javaClass}")

输出结果:

[Java, Kotlin, null, Go]
listOf的返回对象的实际类型:class java.util.Arrays$ArrayList
[Java, Kotlin, Go]
listOfNotNull的返回对象的实际类型:class java.util.ArrayList
[Java, Kotlin, null, Go]
mutableListOf的返回对象的实际类型:class java.util.ArrayList
[Java, Kotlin, null, Go]
arrayListOf的返回对象的实际类型:class java.util.ArrayList

二、使用List的方法

List除了支持Set所支持的操作外,还增加了通过索引操作集合元素的方法。

  • get:带operator修饰的方法,因此可用"[]"运算符访问集合元素。
  • indexOf:返回集合元素在List中的索引。
  • lastIndexOf:返回集合元素在List中最后一次的出现位置。
  • subList:返回List集合的子集合。
    //创建不可变集合,返回值是List
var list1 = listOf("Java", "Kotlin", null, "Go")
for (i in list1.indices) {
println(list1[i])
}
//获取指定元素的出现位置
println(list1.indexOf("Kotlin"))
//获取List的子集合
println(list1.subList(1, 3))

输出结果:

Java
Kotlin
null
Go
1
[Kotlin, null]

三、可变的List

可变的List除了支持可变的Set所支持的方法外,还增加了根据索引执行插入、删除、替换的方法。

    //创建不可变集合,返回值是List
var list1 = mutableListOf("Java", "Kotlin", null, "Go")
//在索引2处插入一个新元素
list1.add(2, "Java")
println(list1)
//删除索引1处的元素
list1.removeAt(1)
println(list1)
//将索引1处的元素替换为"Python"
list1[1] = "Python"
println(list1)
//清空List集合的所有元素
list1.clear()
println(list1.count())

输出结果:

[Java, Kotlin, Java, null, Go]
[Java, Java, null, Go]
[Java, Python, null, Go]
0

Kotlin集合——List集合的更多相关文章

  1. Kotlin集合——Set集合

    Kotlin集合——Set集合 转 https://www.jianshu.com/p/3c95d7729d69   Kotlin的集合类由两个接口派生:Collection和Map. Kotlin的 ...

  2. Kotlin集合——Map集合

    Kotlin集合——Map集合 转 https://www.jianshu.com/p/da5cc9072f1e Kotlin的Map集合用于保存key-value对,其也被分为可变的和不可变的. 一 ...

  3. 【BZOJ-4199】品酒大会 后缀数组 + 并查集合并集合

    4199: [Noi2015]品酒大会 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 436  Solved: 243[Submit][Status] ...

  4. Linq to 泛型集合查询集合包括大写M和年龄小于等于18

    #region Linq to 泛型集合查询集合包括大写M和年龄小于等于18            //List<Student> list = new List<Student&g ...

  5. IT第二十一天 - Collections、ArrayList集合、LinkedList集合、Set集合、HashMap集合、集合的操作注意【修20130828】

    NIIT第二十一天 上午 集合 1. 集合Collection存储数据的形式是单个存储的,而Map存储是按照键值对来存储的,键值对:即键+值同时存储的,类似align="center&quo ...

  6. 数组转集合、集合转数组、字符串数组与int型、long型数组等的转换

    在项目中经常会遇到数组转集合.集合转数组.数组之间类型转换等操作 1.数组转集合 为了实现把一个数组转换成一个ArrayList,很多Java程序员会使用如下的代码: String str[] = { ...

  7. 廖雪峰Java5集合-1Java集合简介-1Java结合简介

    1.集合 定义:集合就是一堆东西.集合里的东西,称为元素Element 数学中的集合: 有限集合: * 一个班所有的学生组成的集合 * 一个网站所有的商品组成的集合 无限集合: * 全体自然数集合 * ...

  8. Java集合 -- ArrayList集合及应用

    JAVA集合 对象数组 集合类之ArrayList 学生管理系统 斗地主案例 NO.one 对象数组 1.1 对象数组描述 A:基本类型的数组:存储的元素为基本类型 int[] arr={1,2,3, ...

  9. Java集合----Set集合

    Set集合 Set 集合不允许包含相同的元素,如果试把两个相同的元素加入同一个 Set 集合中,则添加操作失败. Set 判断两个对象是否相同不是使用 == 运算符,而是根据 equals 方法 Ha ...

随机推荐

  1. Spring4- 01 - Spring框架简介及官方压缩包目录介绍- Spring IoC 的概念 - Spring hello world环境搭建

    一. Spring 框架简介及官方压缩包目录介绍 主要发明者:Rod Johnson 轮子理论推崇者: 2.1 轮子理论:不用重复发明轮子. 2.2 IT 行业:直接使用写好的代码. Spring 框 ...

  2. VBS 数组冒泡排序

    '定义变量 Dim arr1 '数组赋值 arr1 = array(, , , , , , ,) To UBound(arr1) To UBound(arr1) k=arr1(m) If arr1(m ...

  3. linux 导出mysql数据库表及数据

    导出表及结构 mysqldump -h地址ip -u用户名 -p密码 数据库名 > 数据库名.sql --连接数据库 mysql  -h地址ip -u用户名 -p密码 --使用数据库 user ...

  4. Dubbo源码分析(3):ExtensionFactory

    通过ExtensionFactory的getExtension方法获取目标对象.ExtensionFactory实现有两个,一个基于SPI的,一个Spring的ApplicationContext的. ...

  5. Java邮件开发(三):解决附件名为乱码及显示友好名称

    1.附件的名称只能为英文,中文乱码 2.友好名称的显示. 我们使用163等邮箱发送邮件时,我们经常可以看到收件人一栏中会是:张益达 <zyh5540@163.com>这种方式.在上一版本的 ...

  6. SpringMVC的拦截器和数据校验

    SpringMVC拦截器 什么是拦截器:Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理.例如通过拦截器可以 ...

  7. Linux中三种SCSI target的介绍之LIO

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/scaleqiao/article/deta ...

  8. 洛谷P1038 神经网络题解

    注意如果是 \(if(c[i])\) 这条语句并没有说明c[i]不为负数,所以说最好老老实实的写 #include<cstdio> #define _ 0 using namespace ...

  9. npm 更新包

    方法一手动跟新: 手动修改package.json中依赖包版本,执行npm install --force,强制从远程下载所有包更新本地包 方法二使用第三方插件: npm install -g npm ...

  10. namenode 优化 mv慢的问题

    问题现象 问题描述 公司业务程序需求每30分钟mv 一万多个文件,如果三十分钟之内当前的文件内容没有全部移动,程序报错并且停止. 分析 通过分析,发现在启动balancer和不启动balancer的情 ...