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

Kotlin中如何创建ArrayList<Int, Object>式的可变多类型二维列表?

解决方案:用Map替代二维列表实现分组管理

你要的ArrayList<Int, Object>并不是Kotlin的标准结构,因为ArrayList是单泛型列表,没法直接存储键值对。针对你按分组ID快速定位对象的需求,MutableMap<Int, MutableList<YourObject>>是最适配的方案,完全不需要给对象添加冗余的分组ID字段。

具体实现步骤

  1. 声明分组Map
    以分组ID为键,对应分组的对象列表为值,创建可变Map:

    // 把YourObject替换成你实际使用的对象类型
    val groupMap = mutableMapOf<Int, MutableList<YourObject>>()
    
  2. 往指定分组添加对象
    用getOrPut方法简化逻辑:如果分组不存在则自动创建空列表,再把对象加入列表:

    fun addObjectToGroup(groupId: Int, obj: YourObject) {
        val targetGroup = groupMap.getOrPut(groupId) { mutableListOf() }
        targetGroup.add(obj)
    }
    
  3. 快速获取指定分组的所有对象
    直接通过分组ID取值,也可以用getOrDefault避免空值:

    // 获取指定分组,返回值可能为null,需自行处理
    val targetObjects = groupMap[1001]
    // 或者默认返回空列表,避免空指针
    val targetObjects = groupMap.getOrDefault(1001, mutableListOf())
    
  4. 遍历所有分组和对象
    直接遍历Map的键值对即可处理全部内容:

    for ((groupId, objectsInGroup) in groupMap) {
        // 处理当前分组ID和对应的对象列表
        println("分组ID $groupId 包含 ${objectsInGroup.size} 个对象")
    }
    

方案优势

  • 无需修改原有对象结构,不存在冗余的dummy对象
  • 分组查找为O(1)时间复杂度,比遍历二维列表高效得多
  • 支持动态添加/删除分组、对象,满足可变需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:32:42