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 ...
随机推荐
- Rabbitmq异常排查
[RabbitMQ] beam.smp high cpu load https://blog.csdn.net/beer_do/article/details/52777445 Erlang 打开和关 ...
- 【译】STM32L4x6系列用户手册第四章 - 防火墙(FireWall)
4 防火墙(FW) 4.1 简介 防火墙用于保护非易失性存储器中的特定部分的代码或数据,和/或保护SRAM1中的易失性数据,免受在保护区域外部执行的其余代码的非法访问. 4 ...
- 大数据之路week07--day06 (Sqoop 的安装及配置)
Sqoop 的安装配置比较简单. 提供安装需要的安装包和连接mysql的驱动的百度云链接: 链接:https://pan.baidu.com/s/1pdFj0u2lZVFasgoSyhz-yQ 提取码 ...
- Python 冒泡排序只适用位数相同,位数不同用a.sort()方法
数组内容双位数排序: #coding:utf-8 print u"中文" a = ['] b = 0 c = 0 print a i =0 for j in range (len( ...
- 2019-2020-1 20199312《Linux内核原理与分析》第七周作业
进程的描述 操作系统内核实现操作系统的三大管理功能 进程管理(内核中最核心的功能) 内存管理 文件系统 在操作系统中,我们通过进程控制块PCB描述进程. 为了管理进程,内核必须对每个进程进行清晰的描述 ...
- Backpack V
Description Given n items with size nums[i] which an integer array and all positive numbers. An inte ...
- hibernate之关联关系一对多
什么是关联(association) 关联指的是类之间的引用关系.如果类A与类B关联,那么被引用的类B将被定义为类A的属性.例如: public class B{ private St ...
- BZOJ 2159: Crash 的文明世界 第二类斯特林数+树形dp
这个题非常巧妙啊~ #include <bits/stdc++.h> #define M 170 #define N 50003 #define mod 10007 #define LL ...
- 2017.10.2 国庆清北 D2T2 树上抢男主
/* 我只看懂了求LCA */ #include<iostream> #include<cstring> #include<cstdio> #include< ...
- 【一起来烧脑】入门ES6体系
为什么要学习ES6 掌握ES3.ES5.ES6的联系和区别 快速入门ES6 学会快速构建ES6的编译环境 学习ES6: 常量 作用域 箭头函数 默认参数 对象代理 git git clone http ...