Kotlin集合——List集合
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集合的更多相关文章
- Kotlin集合——Set集合
Kotlin集合——Set集合 转 https://www.jianshu.com/p/3c95d7729d69 Kotlin的集合类由两个接口派生:Collection和Map. Kotlin的 ...
- Kotlin集合——Map集合
Kotlin集合——Map集合 转 https://www.jianshu.com/p/da5cc9072f1e Kotlin的Map集合用于保存key-value对,其也被分为可变的和不可变的. 一 ...
- 【BZOJ-4199】品酒大会 后缀数组 + 并查集合并集合
4199: [Noi2015]品酒大会 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 436 Solved: 243[Submit][Status] ...
- Linq to 泛型集合查询集合包括大写M和年龄小于等于18
#region Linq to 泛型集合查询集合包括大写M和年龄小于等于18 //List<Student> list = new List<Student&g ...
- IT第二十一天 - Collections、ArrayList集合、LinkedList集合、Set集合、HashMap集合、集合的操作注意【修20130828】
NIIT第二十一天 上午 集合 1. 集合Collection存储数据的形式是单个存储的,而Map存储是按照键值对来存储的,键值对:即键+值同时存储的,类似align="center&quo ...
- 数组转集合、集合转数组、字符串数组与int型、long型数组等的转换
在项目中经常会遇到数组转集合.集合转数组.数组之间类型转换等操作 1.数组转集合 为了实现把一个数组转换成一个ArrayList,很多Java程序员会使用如下的代码: String str[] = { ...
- 廖雪峰Java5集合-1Java集合简介-1Java结合简介
1.集合 定义:集合就是一堆东西.集合里的东西,称为元素Element 数学中的集合: 有限集合: * 一个班所有的学生组成的集合 * 一个网站所有的商品组成的集合 无限集合: * 全体自然数集合 * ...
- Java集合 -- ArrayList集合及应用
JAVA集合 对象数组 集合类之ArrayList 学生管理系统 斗地主案例 NO.one 对象数组 1.1 对象数组描述 A:基本类型的数组:存储的元素为基本类型 int[] arr={1,2,3, ...
- Java集合----Set集合
Set集合 Set 集合不允许包含相同的元素,如果试把两个相同的元素加入同一个 Set 集合中,则添加操作失败. Set 判断两个对象是否相同不是使用 == 运算符,而是根据 equals 方法 Ha ...
随机推荐
- 开发一个代码的自动生成器,使用Jfinal4.3+Swagger+Sql
-- 所有表名select column_name 列名, data_type 字段类型, column_comment 字段注释 from information_schema.columns ...
- c++第五次作业
运算符重载 一.运算符重载基本规则 1.运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据时导致不同的行为. 2.一般来讲,重载的功能应当与原有功能相似,不能改变原运算符的操作 ...
- notepad++ 调整行间距
在“设置”-“语言格式设置”里面,找到style里面的Line number margin一项,调整字体大小就可以调整左边标号的大小,然后文本内容的行间距即可任意调整.
- vscode——tab转空格
前言 为了规范写法,开启了eslint,但是tab没设置转空格,这里记录下设置过程. 步骤 进入设置并搜索tab 配置设置 复制相应的设置 写入到json文件中 "editor.detect ...
- ajax同步与异步的区别
jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里 ...
- go语言-流程控制--if
一.基本语法介绍 表达式后一定要带{},表达式不需要带(),在if中支持直接定义一个变量,如a:=2 if 表达式{ 代码执行块 }else if{ 代码执行块 }else{ 代码执行块 } 案例1. ...
- arp和rarp协议
ARP与RARP详细解析 原创zlnnjit 发布于2016-04-03 15:12:15 阅读数 9544 收藏 展开 地址解析协议 ARP和逆地址解析协议RARP 1.基本关系: 2.地址解析 ...
- PostgreSQL 11 新特性之覆盖索引(Covering Index)(转载)
通常来说,索引可以用于提高查询的速度.通过索引,可以快速访问表中的指定数据,避免了表上的扫描.有时候,索引不仅仅能够用于定位表中的数据.某些查询可能只需要访问索引的数据,就能够获取所需要的结果,而不需 ...
- ES单机版安装
1.安装JDK(1.8)2.上传解压Elasticsearch-5.4.33.创建一个普通用户,然后将对于的目录修改为普通用户的所属用户和所属组4.修改配置文件config/elasticsearch ...
- ES安装手册
http://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration.htmlhttps://githu ...