有没有一种优雅的方法从Map中提取前N个元素?
我可以创建一个新的Map并迭代选择的值,但是否有函数可以完成此操作?
根据Map
的take
方法文档:
选择前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)
在这种情况下,您碰巧获得了定义中先出现的两个元素,但不要指望这种情况会经常发生。
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)