使用 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]挑战
中等你会收到一个整数列表和两个表示范围的索引。使用 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 的元素
// 计算并打印提取出的元素之和
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Kotlin 在线编辑器