Kotlin:遍历列表并在索引处添加项目

Tho*_*mmy 4 foreach iterator kotlin

我有一个(可变的)物品清单。我想遍历此列表并检查每个项目的特定条件。满足条件时,我想在特定索引处插入(而不是替换)新项目。
在Kotlin中,最优雅的方法是什么?
PS我还没有代码示例,因为我想不出一个好方法。

编辑:用例:我想为特定项目组的列表视图添加标题。

Ily*_*lya 6

如果您有可变列表,则可以获取其可变listIterator列表,并在迭代过程中使用该迭代器对其进行修改。

例如,在每个项目之后插入一个代表偶数的字符串:

val list = mutableListOf("1", "2", "3", "4")

val iterator = list.listIterator()
for (item in iterator) {
    if (item.toInt() % 2 == 0) {
        iterator.add("^ That was even")
    }
}

list.forEach { println(it) }    
Run Code Online (Sandbox Code Playgroud)

或在当前字符串之前插入一个字符串:

val iterator = list.listIterator()
for (item in iterator) {
    if (item.toInt() % 2 == 0) {
        iterator.previous()
        iterator.add("Next will be even:")
        iterator.next()
    }
}

list.forEach { println(it) }
Run Code Online (Sandbox Code Playgroud)


Tho*_*mmy 3

我用它解决了groupBy

val map = mutableList.map {
    val groupItems = it.groupBy { (it as ListItem).section}
    val mappedItems = mutableListOf<ListBaseItem>()
    groupItems.forEach { section, items ->
        mappedItems.add(ListHeaderItem(section, section))
        mappedItems.addAll(items)
    }
    mappedItems
}
Run Code Online (Sandbox Code Playgroud)