Kotlin--2--list
一、for循环
until——左开右闭
fun main(){ for(i in 0..9){ print("$i ") } for(i in 0 until 10){ print("$i ") } }二、List
在 Kotlin 中,ArrayList、listOf、arrayListOf和mutableListOf是常用的集合创建方式,但它们在类型、可变性和使用场景上有明显区别。以下是核心对比:
1.ArrayList<T>()
- 本质:直接创建 Java 的
ArrayList类实例。 - 特点:需显式指定类型(除非通过初始化值推断)。
val list = ArrayList<String>() // 创建空的可变列表 list.add("apple") list.add("banana")2.listOf()
- 本质:创建不可变的只读列表(实现
List接口)。 - 特点:
- 由 Kotlin 标准库提供,优化了空列表和单元素列表的内存占用。
- 调用
add()、remove()等修改方法会抛出UnsupportedOperationException。
val immutableList = listOf("a", "b", "c") // 不可变列表 // immutableList.add("d") // 编译错误:List 接口无 add() 方法3.arrayListOf()
- 本质:创建可变的
ArrayList实例,是ArrayList()的快捷方式。 - 特点:
- 无需显式指定泛型类型(通过初始化值推断)。
- 完全等价于
ArrayList<T>().apply { addAll(...) }
val mutableList = arrayListOf("apple", "banana") // 可变列表 mutableList.add("cherry") // 合法4.mutableListOf()
- 本质:创建实现
MutableList接口的可变列表,默认是ArrayList。 - 特点:
- 类型声明为
MutableList,更抽象,允许未来更换实现(如切换为LinkedList)。 - 初始化语法更简洁,支持默认参数。
- val是不可变定义,但是
mutableListOf是可以修改的——原因:val 限制的是引用不能重新指向,而不是对象一定不可变。
- 类型声明为
val mutableList: MutableList<String> = mutableListOf("a", "b") // 可变列表 mutableList.add("c") // 合法