【问题标题】:Is there an alternative to `groupBy` for this case?在这种情况下,是否有 `groupBy` 的替代方法?
【发布时间】:2021-04-01 03:12:23
【问题描述】:

我有一张items 的地图,键是项目标识符,值是Item 对象。

每个 Item 对象都具有 id(字符串标识符)和 container(它所属的容器)等属性。 Container 也是一个对象,它有很多属性,但这里只需要 id

我要获取所有容器标识符的列表(不重复)

val containersIds : Set<String> = items.values.groupBy { item -> items.getValue(item.id).container.id }.keys

它可以完成这项工作,但除了使用 groupBykeys 之外,也许还有别的东西。

有什么想法吗?

【问题讨论】:

    标签: kotlin functional-programming


    【解决方案1】:

    您只想要每个项目的容器的 ID,没有重复项?

    items.values().map { it.container.id }.distinct()
    

    或者,既然您无论如何都想要Set,那么您就可以免费获得唯一性!

    items.values().map { it.container.id }.toSet()
    

    或跳过values 列表,直接处理条目

    items.map { (_, item) -> item.container.id }.toSet()
    

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 1970-01-01
      • 2021-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-07
      • 1970-01-01
      相关资源
      最近更新 更多