首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Scala GroupBy保持插入顺序?

Scala GroupBy保持插入顺序?
EN

Stack Overflow用户
提问于 2012-03-07 09:13:57
回答 4查看 11.9K关注 0票数 31

列表、地图等中的groupBy方法在函数之后生成一个地图。

有没有一种方法可以使用groupBy生成保持插入顺序的映射(例如LinkedHashMap)?

我使用for循环来手动插入,但我想知道是否有一个有用的已定义函数可以帮助我。

提前谢谢。

EN

Stack Overflow用户

回答已采纳

发布于 2012-03-07 11:30:05

TraversableLike上定义的groupBy会生成一个immutable.Map,所以您不能让此方法生成其他内容。

已经保留了每个条目中元素的顺序,但没有保留键的顺序。键是所提供函数的结果,因此它们实际上没有顺序。

如果你想根据一个特定的键第一次出现的情况下订单,这里有一个你可以做的草图。假设我们想按整数的值/2对它们进行分组:

代码语言:javascript
运行
复制
val m = List(4, 0, 5, 1, 2, 6, 3).zipWithIndex groupBy (_._1 / 2)
val lhm = LinkedHashMap(m.toSeq sortBy (_._2.head._2): _*)
lhm mapValues (_ map (_._1))
// Map(2 -> List(4, 5), 0 -> List(0, 1), 1 -> List(2, 3), 3 -> List(6))
// Note order of keys is same as first occurrence in original list
票数 24
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9594431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档