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

Kotlin:如何在ArrayList指定位置插入Hare对象?技术求助

Kotlin ArrayList插入Hare对象的逻辑修正

原代码存在的问题

  1. 条件判断错误:animals.filter { it.name.contains("n") }返回的是匹配元素的列表,无法直接作为if的布尔条件;而且判断逻辑和需求不符,需求是判断是否存在Elephant,不是包含"n"的元素。
  2. 插入逻辑缺失:仅调用animals.add(Animal("hare"))会将元素添加到列表末尾,完全没有实现需求中指定位置插入的规则。

修改后的代码

data class Animal(val name: String)

fun main() {
    val animals = arrayListOf<Animal>()
    animals.addAll(listOf(Animal("Lion"), Animal("Elephant"), Animal("Tiger")))
    
    val hare = Animal("Hare")
    // 查找第一个Elephant的索引
    val elephantIndex = animals.indexOfFirst { it.name == "Elephant" }

    if (elephantIndex != -1) {
        // 存在Elephant,插入到它的前方
        animals.add(elephantIndex, hare)
    } else {
        // 不存在Elephant,查找最后一个Lion的索引
        val lastLionIndex = animals.indexOfLast { it.name == "Lion" }
        if (lastLionIndex != -1) {
            // 插入到最后一个Lion的前方
            animals.add(lastLionIndex, hare)
        } else {
            // 极端情况:既无Elephant也无Lion,默认添加到列表末尾
            animals.add(hare)
        }
    }

    println(animals)
}

代码说明

  • 查找目标索引:
    • indexOfFirst { it.name == "Elephant" }:快速定位第一个Elephant的位置,不存在则返回-1。
    • indexOfLast { it.name == "Lion" }:定位最后一个Lion的位置,处理列表中存在多个Lion的场景。
  • 指定位置插入:使用ArrayList.add(index, element)方法,将Hare插入到目标元素的前方,原索引及之后的元素会自动后移,保证列表顺序符合需求。
  • 边界处理:增加了既无Elephant也无Lion的极端情况处理,避免索引越界错误,可根据实际需求调整该分支逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:33:29