是否有一种从 Map 中提取前“N”个元素的优雅方法?
我可以创建一个新的 Map 并遍历要选择的值,是否有实现此功能的函数?
来自方法的文档:take
Map
选择前n 个元素。
注意:可能会针对不同的运行返回不同的结果,除非对基础集合类型进行了排序。
在地图的情况下,集合不是有序的,所以不要指望获取前n 个元素——事实上,前 n 个元素的概念甚至不存在于地图中。
但是take
会给你一些前n 个元素,听起来这就是你想要的:
scala> Map('a -> 1, 'b -> 2, 'c -> 3).take(2)
res1: scala.collection.immutable.Map[Symbol,Int] = Map('a -> 1, 'b -> 2)
在这种情况下,您碰巧得到了定义中最先出现的两个元素,但不要指望这种情况发生。
听起来您正在寻找SortedMap
,以及take(n)
其他人讨论的内容。
scala> val map = Map[String,Int]("one"->1,"two"->2,"three"->3)
map: scala.collection.immutable.Map[String,Int] =
Map(one -> 1, two -> 2, three -> 3)
scala> val n = 2
n: Int = 2
scala> val firstN = map.take(n)
firstN: scala.collection.immutable.Map[String,Int] = Map(one -> 1, two -> 2)