You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确导入Kotlin版ArrayList而非Java版ArrayList?

Kotlin中ArrayList的typealias疑问解答

问题描述

我刚开始学习Kotlin,编写了如下代码使用ArrayList:

fun someFunction(){
    var list = ArrayList<String>()
}

按下Ctrl+点击ArrayList后,跳转到了一个类文件,里面通过typealias将Kotlin的ArrayList链接到Java版ArrayList:

@file:Suppress("ACTUAL_WITHOUT_EXPECT") // for building kotlin-stdlib-jvm-minimal-for-test

package kotlin.collections

@SinceKotlin("1.1") public actual typealias RandomAccess = java.util.RandomAccess


@SinceKotlin("1.1") public actual typealias ArrayList<E> = java.util.ArrayList<E>
@SinceKotlin("1.1") public actual typealias LinkedHashMap<K, V> = java.util.LinkedHashMap<K, V>
@SinceKotlin("1.1") public actual typealias HashMap<K, V> = java.util.HashMap<K, V>
@SinceKotlin("1.1") public actual typealias LinkedHashSet<E> = java.util.LinkedHashSet<E>
@SinceKotlin("1.1") public actual typealias HashSet<E> = java.util.HashSet<E>

我的理解是否正确?typealias是不是意味着我使用的ArrayList实际是java.util.ArrayList?另外如何正确导入Kotlin版的ArrayList?

解答

  • 你的理解完全正确
    在JVM平台的Kotlin标准库中,kotlin.collections.ArrayList确实是通过typealias定义的别名,指向java.util.ArrayList。这意味着你在代码中写的ArrayList<String>,本质上就是Java的ArrayList实现,两者是同一个类。

  • 不存在独立的"Kotlin版ArrayList"
    Kotlin在JVM环境下直接复用了Java集合框架的成熟实现,通过typealias来提供更符合Kotlin风格的调用方式,不需要额外导入任何东西。你当前使用的ArrayList就是标准的用法——默认导入的kotlin.collections.ArrayList就是这个别名,完全可以正常使用所有Kotlin扩展方法(比如forEach、filter等),同时也兼容Java集合的所有特性。

内容的提问来源于stack exchange,提问作者Adam Varhegyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 05:35:29