如何基于()在嵌套地图中跳过项目

发布于 2025-01-28 08:15:13 字数 886 浏览 2 评论 0原文

我希望通过项目's data进行迭代,并基于item.type /代码>我需要跳过该元素,而不是添加到列表。我该如何实现? 继续@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
            )
        }
}

I want iterate over items's data and create a a new list of SomeData based on item.type however when type is UNKNOWN I need skip that element and not add to list. How can I achieve it? continue@map is not working for collection

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
            )
        }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

娇俏 2025-02-04 08:15:13

在开始在列表上迭代之前,您可以随时过滤这些值。

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

You could always filter out those values before you start iterating over the list.

items.filter { it.type == Type.UNKNOWN }
.groupBy{ ... }
嘿咻 2025-02-04 08:15:13

我给出了解决方案,如下所示

 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
                )
            }
    }

I have given the solution as shown below here

 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
                )
            }
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文