如何根据 When() 跳过嵌套地图中的项目

How to skip an item in nested map based on When()

我想迭代 itemsdata 并基于 item.type 创建一个新的 SomeData 列表但是当类型是 UNKNOWN 我需要跳过那个元素并且不添加到列表中。我怎样才能实现它? continue@map 不适用于集合

fun getListOfMyItems(
        items: List<SomeData>,
    ): List<MyItem> {

return items.groupBy {
            Instant.ofEpochMilli(it.timestamp)
                .toYear()
        }.map { element ->
            val myItemsList = element.data.map{ item ->

                val itemsList: SomeData = when (item.type) {
                    Type.FIRST -> doChangesOnDataForFIRSTandReturn(item)
                    Type.SECOND -> doChangesOnDataForSECONDandReturn(item)
                    Type.UNKNOWN -> //how skip item here and not add to itemsList?
                }
                myItemsList
            }

            MyItem(
                items = myItemsList
            )
        }
}

我已经给出了如下所示的解决方案

 fun getListOfMyItems(
            items: List<SomeData>,
        ): List<MyItem> {
    
    return items.groupBy {
                Instant.ofEpochMilli(it.timestamp)
                    .toYear()
            }.map { element ->
                val myItemsList = element.data.mapNotNull foo@{ item ->
    
                    val itemsList: SomeData = when (item.type) {
                        Type.FIRST -> doChangesOnDataForFIRSTandReturn(item)
                        Type.SECOND -> doChangesOnDataForSECONDandReturn(item)
                        Type.UNKNOWN -> return@foo null
                    }
                    myItemsList
                }
    
                MyItem(
                    items = myItemsList
                )
            }
    }

您始终可以在开始遍历列表之前过滤掉这些值。

items.filter { it.type == Type.UNKNOWN }
.groupBy{ ... }