Menu
CoddyTech

使用 SubList 进行列表切片

本课属于 Coddy Kotlin 学习旅程的“基础知识”单元。第 79 课,共 93 课。

有时,你需要提取列表的一部分,而不是处理整个集合。subList() 方法可以让你查看现有列表中特定范围的元素。

subList() 方法需要两个参数:起始索引(包含)和结束索引(不包含)。这意味着起始索引处的元素会包含在内,但结束索引处的元素不会包含在内:

val numbers = listOf(10, 20, 30, 40, 50)
val slice = numbers.subList(1, 4)
println(slice)  // [20, 30, 40]

在这个示例中,subList(1, 4)会提取从索引 1 到索引 4 之前(不包括索引 4)的元素。这样会得到第二、第三和第四个元素。

生成的子列表是原始列表的视图,而不是副本。理解这一点对于处理可变列表很重要,因为对原始列表所做的更改可能会影响子列表。

对于大多数只读列表的使用场景,你可以直接用它访问一段元素:

val days = listOf("Mon", "Tue", "Wed", "Thu", "Fri")
val midWeek = days.subList(1, 4)
println(midWeek)  // [Tue, Wed, Thu]
challenge icon

挑战

中等

你会收到一个整数列表和两个表示范围的索引。使用 subList() 提取一个子列表,并输出提取出的元素之和。

输入格式:

  • 第一行:一个整数 n,表示元素个数
  • 接下来的 n 行:要添加到列表中的整数
  • 下一行:起始索引(包含)
  • 最后一行:结束索引(不包含)

输出格式:

输出提取出的子列表中各元素的和。

示例:

如果列表为 [5, 10, 15, 20, 25],起始索引为 1,结束索引为 4,那么子列表为 [10, 15, 20],输出应为 45。

亲手试试

fun main() {
    val n = readLine()!!.toInt()
    val list = mutableListOf<Int>()
    
    repeat(n) {
        list.add(readLine()!!.toInt())
    }
    
    val startIndex = readLine()!!.toInt()
    val endIndex = readLine()!!.toInt()
    
    // TODO:在下面编写你的代码
    // 使用 subList() 提取从 startIndex 到 endIndex 的元素
    // 计算并打印提取出的元素之和
    
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Kotlin 在线编辑器