Map から最初の「N」要素を抽出するエレガントな方法はありますか?
新しい Map を作成して、選択する値を反復処理できますが、これを実現する関数はありますか?
上のメソッドのドキュメントから:take
Map
最初のn要素を選択します。
注: 基になるコレクション タイプが順序付けられていない限り、実行ごとに異なる結果が返される可能性があります。
マップの場合、コレクションは順序付けされていないため、最初の n 要素を取得することを期待しないでください。実際、最初のn要素の概念はマップには存在しません。
しかし、最初のn 個の要素がいくつかtake
得られます。
scala> Map('a -> 1, 'b -> 2, 'c -> 3).take(2)
res1: scala.collection.immutable.Map[Symbol,Int] = Map('a -> 1, 'b -> 2)
この場合、たまたま定義で最初に来た 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)