Android 之 List 简述

一、简单创建方式

Android 开发中,列表有很多种类,如ArrayList、LinkedList、List、MutableList等,创建列表的方式如下所示:

    fun listDemo() {
        // 使用 listOf 创建不可变的空列表
        val list = listOf<Int>()
        val list1 = listOf(1, 2, 3)

        // 使用 mutableListOf 创建可变的空列表
        var mutableList = mutableListOf<Int>()
        mutableList.add(1)
        val mutableList1 = mutableListOf(1, 2, 3)

        // 创建 ArrayList 数组列表
        var arrayList = ArrayList<String>()
        arrayList.add("test")
        var arrayList1 = arrayListOf<String>()
        arrayList1.add("test1")
        val arraylist2 = arrayListOf("test1", "test2")

        // 创建 LinkedList 列表
        var linkedList = LinkedList<Boolean>()
        linkedList.add(true)
        val linkedList1 = linkedSetOf(true, false, true)
        println(linkedList1)
    }

二、List 区别及使用场景

1、ArrayList:

  • 底层数据结构 :ArrayList基于动态数组实现,内部维护一个Object数组,默认初始容量为10,当元素数量超过当前容量时会自动扩容。
  • 随机访问效率高:由于基于数组,ArrayList支持通过索引快速访问元素,时间复杂度为O(1)。
  • 插入和删除效率低:在中间或开头插入/删除元素时,需要移动后续元素,时间复杂度为O(n)。
  • 适合随机访问:对于频繁随机访问元素的场景,ArrayList性能更好。

2、LinkedList:

  • 底层数据结构 :LinkedList基于双向链表实现,每个节点包含数据元素和指向前后节点的引用。
  • 插入和删除效率高:在任意位置插入/删除元素时,只需调整相邻节点的引用,时间复杂度为O(1)。
  • 顺序访问效率低:由于基于链表,LinkedList不支持随机访问,需要从头或尾开始遍历,时间复杂度为O(n)。
  • 适合频繁插入和删除:对于频繁插入和删除元素的场景,LinkedList性能更好。

3、List / MutableList:

List 和 MutableList 是接口,MutabaleList 实现了 List 接口,List 实现了 Collection 接口。采用 listOf 和 mutableListOf 方式创建列表时,实际创建的是 ArrayList。

/**
 * Returns an empty new [MutableList].
 * @sample samples.collections.Collections.Lists.emptyMutableList
 */
@SinceKotlin("1.1")
@kotlin.internal.InlineOnly
public inline fun <T> mutableListOf(): MutableList<T> = ArrayList()

/**
 * Returns a [List] that wraps the original array.
 */
public expect fun <T> Array<out T>.asList(): List<T>

/**
 * Returns a new read-only list of given elements.  The returned list is serializable (JVM).
 * @sample samples.collections.Collections.Lists.readOnlyList
 */
public fun <T> listOf(vararg elements: T): List<T> = if (elements.size > 0) elements.asList() else emptyList()

参考文档:

https://blog.csdn.net/m0_56615376/article/details/136744493

相关推荐
众拾达人2 小时前
Android自动化测试实战 Java篇 主流工具 框架 脚本
android·java·开发语言
吃着火锅x唱着歌3 小时前
PHP7内核剖析 学习笔记 第四章 内存管理(1)
android·笔记·学习
_Shirley4 小时前
鸿蒙设置app更新跳转华为市场
android·华为·kotlin·harmonyos·鸿蒙
hedalei6 小时前
RK3576 Android14编译OTA包提示java.lang.UnsupportedClassVersionError问题
android·android14·rk3576
锋风Fengfeng6 小时前
安卓多渠道apk配置不同签名
android
枫_feng7 小时前
AOSP开发环境配置
android·安卓
叶羽西7 小时前
Android Studio打开一个外部的Android app程序
android·ide·android studio
qq_171538859 小时前
利用Spring Cloud Gateway Predicate优化微服务路由策略
android·javascript·微服务
Vincent(朱志强)10 小时前
设计模式详解(十二):单例模式——Singleton
android·单例模式·设计模式
mmsx10 小时前
android 登录界面编写
android·登录界面