2013-08-02 7 views

Antwort

13

Von the docs für die take Methode auf Map:

wählt zuerst n Elemente.

Hinweis: liefert möglicherweise unterschiedliche Ergebnisse für verschiedene Durchläufe, sofern der zugrunde liegende Sammlertyp nicht bestellt wurde.

Im Fall von Karten der Sammlung nicht bestellt, so zählen nicht die erste n Elemente in der Tat das Konzept der den ersten n Elemente auf immer nicht funktioniert existieren sogar für Karten.

Aber take geben Ihnen einige erste n Elemente, und es klingt wie das ist, was Sie wollen:

scala> Map('a -> 1, 'b -> 2, 'c -> 3).take(2) 
res1: scala.collection.immutable.Map[Symbol,Int] = Map('a -> 1, 'b -> 2) 

In diesem Fall, dass Sie die beiden Elemente bekommen passieren, die zuerst in der kam Definition, aber nicht darauf zählen.

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) 
0

Klingt, als ob Sie nach einem SortedMap suchen, zusammen mit take(n), wie von anderen diskutiert.

Verwandte Themen