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

Kotlin中自定义列表打乱后如何查找元素索引?

打乱列表后查找指定歌曲索引的方法

针对你的场景,这里提供几种实用的实现方式:

1. 根据歌曲属性匹配索引

如果只需要通过歌曲名称、rawId这类属性定位目标,可以用Kotlin的indexOfFirst或indexOfLast函数,直接传入判断逻辑:

// 按歌曲名称查找第一个匹配项的索引
val targetIndex = songList.indexOfFirst { it.name == "Dark Star" }

// 按rawId查找的写法
val targetIndexById = songList.indexOfFirst { it.rawId == "2131689475" }

如果列表里有重复属性的歌曲,indexOfFirst返回第一个匹配的索引,indexOfLast返回最后一个。

2. 根据SongInfo实例查找索引

如果你手里已经有目标歌曲的具体对象实例,可以直接用indexOf方法:

// 假设你已经拿到了目标歌曲的实例
val targetSong = SongInfo(name="Dark Star", rawId="2131689475", time="1:30")
val targetIndex = songList.indexOf(targetSong)

注意:这种方式要求你的SongInfo类必须正确重写equals()和hashCode()方法,不然默认会比较对象的内存引用,可能找不到正确结果。

额外提示

  • 不管用哪种方法,如果找不到匹配的歌曲,都会返回-1,使用前记得判断结果,避免索引越界。
  • 你的原始列表存在语法错误(多了一个逗号、最后一个SongInfo未闭合括号),修正后的正确列表写法参考:
val songList = listOf(
    SongInfo(name="Dark Star", rawId="2131689475", time="1:30"),
    SongInfo(name="Can't let go", rawId="2131689474", time="1:24"),
    SongInfo(name="Big Digits", rawId="2131689473", time="0:49"),
    SongInfo(name="What's Mine", rawId="2131689478", time="") // 补充time属性值保持结构一致
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:50:39