是否有一种从地图中提取第一个'N'元素的优雅方法?
我可以创建一个新的Map并迭代要选择的值,是否有一个函数可以完成这个?
答案 0 :(得分:13)
来自take
的{{1}}方法来自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)
在这种情况下,您碰巧得到了定义中第一个出现的两个元素,但不要指望这种情况发生。
答案 1 :(得分:1)
听起来像是在寻找SortedMap
以及其他人讨论过的take(n)
。
答案 2 :(得分:0)
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)