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. 微信小程序~基础组件

    (1)视图容器 名称 功能说明 movable-view 可移动的视图容器,在页面中可以拖拽滑动 cover-image 覆盖在原生组件之上的图片视图 cover-view 覆盖在原生组件之上的文本视 ...

  2. python算法与数据结构-快速排序算法(36)

    一.快速排序的介绍 快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外 ...

  3. Java并发(九)【转载】不可不说的Java“锁”事

    转载自 美团技术团队,原文链接 不可不说的Java“锁”事 前言 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率.本文旨在对锁相关源码(本文中的源码来自JDK ...

  4. GT源码阅读

    昨天读了一点GT的代码,做个笔记. 参考阅读顺序:https://gt.qq.com/docs/a/UseGtWithBroadcast.txt 在上面的doc上面找到了对应的板块的代码. 1.采集本 ...

  5. 项目中使用express,只是单纯项目中使用

    安装express npm install express --save-dv 建议安装到dev依赖里面 安装body-parse npm install body-parser --save-dev ...

  6. Linux安装版本solr-5.3.0

    准备材料:solr-5.3.0.tgz 下载路径:http://mirrors.hust.edu.cn/apache/lucene/solr/ 安装solr 1.解压solr [root@svn-se ...

  7. NOI.ac模拟赛20181021 ball sequence color

    T1 ball 可以发现每次推动球时,是将每个球的位置 −1-1−1 ,然后把最左边的球放到 P−1P-1P−1 处. 记个 −1-1−1 次数,再用set维护就好了. #include <bi ...

  8. docker 构建自己的image 镜像文件

    docker build 构建自己的镜像文件. 1.在本地工程中运行生成一个springboot的可运行的jar. 因为我习惯用eclipse,所以在eclipse下新建一个springboot的工程 ...

  9. 012——matlab判断变量是否存在

    (一)参考文献:https://www.ilovematlab.cn/thread-48319-1-1.html (二) clc clear a = exist('a') ans =1 clc cle ...

  10. learning java AWT BoxLayout布局管理器

    import javax.swing.*; import java.awt.*; public class BoxSpaceTest { private Frame f = new Frame(&qu ...