如何根据 When() 跳过嵌套地图中的项目
How to skip an item in nested map based on When()
我想迭代 items
的 data
并基于 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{ ... }
我想迭代 items
的 data
并基于 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{ ... }