【问题标题】:Scala: getting the key (and value) of a Map.head elementScala:获取 Map.head 元素的键(和值)
【发布时间】:2012-03-19 21:42:27
【问题描述】:

让我们想象一下下面的不可变 Map:

val foo = Map((10,"ten"), (100,"one hundred"))

我想获取第一个元素的键。

foo.head 获取第一个元素。但是接下来呢?

我也想要这个元素的值,即“十”

【问题讨论】:

  • Maps 未排序。所以“第一”并不总是你认为的那样。请记住这一点:-)

标签: scala collections map


【解决方案1】:

设置键/值对:
val (key, value) = foo.head

【讨论】:

  • 有没有办法获得前 2 个(键、值)对或前 3 个而不是只获得第一个。
【解决方案2】:

Map.head 返回一个元组,因此您可以使用 _1 和 _2 来获取它的索引和值。

scala> val foo = Map((10,"ten"), (100,"one hundred"))
foo: scala.collection.immutable.Map[Int,java.lang.String] = Map(10 -> ten, 100 -
> one hundred)

scala> val hd=foo.head
hd: (Int, java.lang.String) = (10,ten)

scala> hd._1
res0: Int = 10

scala> hd._2
res1: java.lang.String = ten

【讨论】:

  • 感谢您的详细解答。我必须说,IODEV 的解决方案看起来非常好。
【解决方案3】:

我必须说@Paolo Falabella 有最好的答案,因为使用

val (key, value) = foo.head

在尾递归方法中会导致崩溃!

所以使用起来更好/更通用

val myMap = Map("Hello" ->"world", "Hi" -> "Everybody")
print(myMap.head._1)

这将打印“Hello”并且不会导致尾部递归方法崩溃。

【讨论】:

    猜你喜欢
    • 2020-04-06
    • 2021-01-23
    • 1970-01-01
    • 2016-02-26
    • 1970-01-01
    • 2015-05-17
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多