Kotlin List接口简介

Kotlin List接口简介,List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现List接口的对象称为List集合。在List集合中允许出现重复的元素,所有的元素是以一种线性方式存储的,在程序中可以通过索引来访问集合中的指定元素。另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。

在Kotlin中,List分为可变集合MutableList(Read&Write,Mutable)和不可变集合List(ReadOnly,Immutable)。其中可变集合MutableList可以对集合中的元素进行增加和删除的操作,不可变集合List对集合中的元素仅提供只读操作。在开发过程中,尽可能多用不可变集合List,这样可以在一定程度上提高内存效率。

不可变List

在Kotlin中,不可变List是一个只读操作的集合,只有size属性和get()函数。与Java类似,它继承自Collection进而继承自Iterable。不可变List是通过listOf()函数创建的,该函数可以创建空的List,也可以创建包含一个或多个元素的List。示例代码如下:

val mList: List<Int> = listOf()                   //创建空的List 
val mList: List<Int> = listOf(0)                  //创建包含一个元素的List 
val mList: List<Int> = listOf(1, 2, 3, 4, 5)      //创建包含多个元素的List

在上述代码中,创建了3个Int类型的List集合,该集合可以不存放元素,也可以直接存放相应的元素。List集合还可以进行以下几种操作。

1. 查询操作
List集合的查询操作主要有判断集合是否为空,获取集合中元素的个数以及返回集合中的元素的迭代器。为此,Kotlin提供了一系列方法,如表所示。
Kotlin List接口简介

接下来我们通过一个案例来演示上述表中List集合的查询操作,具体代码如下所示。

package com.itheima.chapter05
fun main(args: Array<String>) {
    val list: List<Int> = listOf(0, 1, 2)
    if (list.isEmpty()) { // 判断集合中元素是否为空
        println(" 集合中没有元素")
        return
    } else {
        println(" 集合中有元素,元素个数为:" + list.size)
    }
   if (list.contains(1)) {
       println(" 集合中包含元素1")
   }
   println(" 遍历集合中的所有元素:")
   val mIndex = list.iterator()  //获取集合中元素的迭代器
   while (mIndex.hasNext()) {
       print(mIndex.next().toString() + "\t")
   }
}

运行结果:

集合中有元素,元素个数为:3
集合中包含元素1
遍历集合中的所有元素:
0 1 2

2. 批量操作
在List集合中,经常会判断一个集合中是否包含某个集合,为此,Kotlin提供了一个contains All(elements:Collection<@UnsafeVariance E>)方法。接下来我们通过一个案例来演示List集合中的判断批量操作,具体代码如下所示。

package com.itheima.chapter05
fun main(args: Array<String>) {
    val list1: List<Int> = listOf(0, 1, 2)
    val list2: List<Int> = listOf(0, 1, 2, 3)
    if (list2.containsAll(list1)) {    //判断list2是否包含list1
        println("list2 集合包含list1集合")
    }
}

运行结果:

list2集合包含list1集合

3. 检索操作
List集合中的检索操作主要有查询集合中某个位置的元素、返回集合中指定元素首次出现的索引、返回指定元素最后一次出现的索引以及返回集合中指定的索引之间的集合。Kotlin中检索操作的方法如表所示。
Kotlin List接口简介

接下来我们通过一个案例来演示上述表中索引检索的操作,具体代码如下所示。

package com.itheima.chapter05
fun main(args: Array<String>) {
    val list: List<Int> = listOf(2, 3, 1, 3, 2, 1, 2)
    println(" 集合中索引为0 的元素是:" + list.get(0))
    println(" 元素1 第1次出现的位置是:" + list.indexOf(1))
    println(" 元素1 最后一次出现的位置是:" + list.lastIndexOf(1))
    println(" 截取集合中索引为1~4 的元素:" + list.subList(1, 4))
}

运行结果:

集合中索引为0的元素是:2
元素1第1次出现的位置是:2
元素1最后一次出现的位置是:5
截取集合中索引为1~4的元素:[3, 1, 3]

4. 遍历操作
List集合中的遍历操作主要有返回一个集合的迭代器,以及从指定位置开始返回集合的迭代器。获取迭代器的相关方法如表所示。

方法 方法说明
listIterator()ListIterator<E> 返回一个集合的迭代器
listIterator(index:Int)ListIterator<E> 从指定位置开始返回集合的迭代器

接下来我们通过一个案例来演示上述表中迭代器的操作,具体代码如下所示。

package com.itheima.chapter05
fun main(args: Array<String>) {
    val list: List<Int> = listOf(1, 2, 3, 4)
    val iterator1 = list.listIterator()   //获取一个集合的迭代器
    val iterator2 = list.listIterator(1) // 获取从索引1 开始的集合的迭代器
    println(" 遍历集合中的元素:")
    while (iterator1.hasNext()) {
        print(iterator1.next().toString() + "\t")
    }
   println("\n" + " 从索引1 开始遍历集合中的元素:")
   while (iterator2.hasNext()) {
       print(iterator2.next().toString() + "\t")
   }
}

运行结果:

遍历集合中的元素:
1 2 3 4
从索引1开始遍历集合中的元素:
2 3 4
赞(0)

评论 抢沙发

评论前必须登录!