6

Map から最初の「N」要素を抽出するエレガントな方法はありますか?

新しい Map を作成して、選択する値を反復処理できますが、これを実現する関数はありますか?

4

3 に答える 3

14

上のメソッドのドキュメントから:takeMap

最初の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 つの要素を取得しますが、これが起こるとは考えていません。

于 2013-08-02T14:03:05.840 に答える
1

を探しているようですね。他のSortedMaptake(n)が話しているように。

于 2013-08-02T16:23:59.047 に答える
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)
于 2013-08-02T14:02:13.773 に答える