Kotlin--2--list

Kotlin--2--list

一、for循环

until——左开右闭

fun main(){ for(i in 0..9){ print("$i ") } for(i in 0 until 10){ print("$i ") } }

二、List

在 Kotlin 中,ArrayListlistOfarrayListOfmutableListOf是常用的集合创建方式,但它们在类型、可变性和使用场景上有明显区别。以下是核心对比:

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") // 合法