Не зная точно, чего вы пытаетесь достичь, вы можете рассмотреть возможность использования SortedMap
, который гарантирует, что ключи отсортированы по порядку.Рассмотрим следующие два примера в Scala REPL :
scala> val z = Map(4 -> 40, 3 -> 30, 1 -> 10, 2 -> 20)
z: scala.collection.immutable.Map[Int,Int] = Map(4 -> 40, 3 -> 30, 1 -> 10, 2 -> 20)
scala> z.take(2)
res0: scala.collection.immutable.Map[Int,Int] = Map(4 -> 40, 3 -> 30)
scala> import scala.collection.immutable.SortedMap
import scala.collection.immutable.SortedMap
scala> val zs = SortedMap(4 -> 40, 3 -> 30, 1 -> 10, 2 -> 20)
zs: scala.collection.immutable.SortedMap[Int,Int] = Map(1 -> 10, 2 -> 20, 3 -> 30, 4 -> 40)
scala> zs.take(2)
res1: scala.collection.immutable.SortedMap[Int,Int] = Map(1 -> 10, 2 -> 20)
Как указывало @jwvh, в обычном Map
нет определенного порядка, но этот порядок фиксирован после определения,таким образом, вы всегда будете получать одни и те же члены, возвращенные для .take(2)
при одном и том же экземпляре карты.Однако то, какие значения вы получите, будет зависеть от порядка создания карты.
Между тем, в SortedMap
ключи всегда упорядочены, поэтому при использовании элементов .take(2)
вывсегда получат одинаковые два элемента, независимо от порядка определения: те, которые имеют два нижних значения ключа.
Обратитесь к справке по методу take
для получения дополнительной информации.