scala - 在 Scala/Spark 中获取键/值对的键
问题描述
我使用 Scala/Spark 中的箭头运算符创建了一个键值对:
val picardsShip = "Picard" -> "Enterprise-D"
正如预期的那样,我通过 using 提取了 valueprintln(picardsShip._2)
并返回了 value 。Enterprise-D
但是,我想在这种情况下提取密钥以获取Picard
. 当我picardsShip.
在我正在使用的 IntelliJ IDEA 编辑器中输入内容时,我没有看到任何暗示获取密钥的明显属性或方法的内容。有任何想法吗?谢谢你。
解决方案
请注意,您还没有创建键/值对。你已经创建了一个元组。当你使用 REPL 时,你可以看到发生了什么:
scala> val picardsShip = "Picard" -> "Enterprise-D"
picardsShip: (String, String) = (Picard,Enterprise-D)
要访问第一个值,请使用@Krzysztof Atłasik 建议的内容并使用._1
:
scala> picardsShip._1
res1: String = Picard
是的,您可以使用运算符创建键/值对->
,但如果您希望它像拥有键/值对一样对其进行操作 - 您必须通过将其包装在地图中来更加具体。然后你不再有 1 个键/值对,但理论上没有多个键值对,这意味着你基本上拥有Seq
Scala 真正构建的一种。这Map
使您可以访问一个 API,该 API 基本上说“好的,这里有一系列可以被视为键值对的项目”,并允许您按照您期望的键值对查看的方式对其进行操作:
scala> val shipMap: Map[String, String] = Map(("Picard" -> "Enterprise-D"))
shipMap: Map[String,String] = Map(Picard -> Enterprise-D)
scala> shipMap("Picard")
res2: String = Enterprise-D
scala> shipMap.keys.head
res3: String = Picard
scala> shipMap.foreach( kv => println(kv._1))
Picard
推荐阅读
- javascript - ExpressionChangedAfterItHasBeenCheckedError:表达式在从 ckEditor 获取值时被检查后已更改
- flutter - StatefullWidget 和 StatelessWidget 在性能方面有什么区别?
- git - Git - 给合并的分支一个标签
- spring-boot - How to create apache spark standalone cluster for integration testing using TestContainers?
- regex - 使用 sed GnuWin32 删除一行中的重复单词
- reactjs - 为什么我的 IconMenu 反应组件有错误?警告:未知的事件处理程序属性“onKeyboardFocus”。会被忽略
- azure-cognitive-search - Azure 搜索服务重复结果
- c++ - 'cout' 将整数显示为十六进制
- sql - 如何在 Oracle PLSQL 中对表进行透视?
- alfresco - Alfresco Search Services 和 OpenJDK11 的 GC/OOM 问题