You need to enable JavaScript to run this app. Kotlin中如何实现列表重复拼接,达成Python列表乘3的等价效果
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中如何实现列表重复拼接,达成Python列表乘3的等价效果

Kotlin 实现列表内容连续重复拼接为新列表的常用方案

前置场景:已定义整型可变列表 val a: MutableList<Int> = mutableListOf(1,2,3,4),需要生成全新列表b,元素序列为 [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4],等价于Python中 a * 3 的原生语法效果。
注:实际Kotlin代码初始化列表需通过构造函数完成,不能直接用括号对列表类型赋值。

  • 最简洁的标准库实现(Kotlin 1.4+ 可用)
    直接调用官方集合扩展方法 repeat(n),一行代码即可达成目标:

    // 生成不可变类型的全新列表
    val b = a.repeat(3)
    // 如需可变类型结果,可直接做类型转换
    val mutableB = a.repeat(3).toMutableList()
    

    该方法由Kotlin集合标准库提供,逻辑为将原集合的元素连续重复n次后组装为全新列表,全程不会修改原列表的内容,完全匹配需求。

  • 低版本兼容的循环拼接实现
    如果项目Kotlin版本较低,无法使用repeat集合扩展,可通过循环追加元素的方式实现,性能和标准库实现无差异:

    // 兼容所有Kotlin版本的写法
    val b = mutableListOf<Int>().apply {
        repeat(3) {
            addAll(a) // 每次循环将原列表的全部元素追加到新列表末尾
        }
    }
    // Kotlin 1.3.7+ 可用更简洁的buildList写法
    val b = buildList {
        repeat(3) {
            addAll(a)
        }
    }
    
  • 嵌套列表摊平实现
    借助列表构造函数先生成对应重复次数的嵌套结构,再通过flatten拍平为一维列表,写法同样简洁:

    val b = List(3) { a }.flatten()
    

    该逻辑先生成包含3个原列表引用的二维嵌套列表,再将所有嵌套层的元素按顺序展开为一维列表,最终效果和直接重复拼接完全一致。

避坑提醒:上述所有实现生成的新列表均为独立存储的内容,修改新列表的元素不会反向影响原列表a,符合"生成全新列表"的初始要求。不要直接对原可变列表做追加操作,否则会破坏原列表的存储内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 19:45:04