【问题标题】:Append Map[String, String]() onto an Array or List with [String] type in Scala在 Scala 中将 Map[String, String]() 附加到具有 [String] 类型的数组或列表中
【发布时间】:2019-10-07 16:00:23
【问题描述】:

我已使用 MapString、String 将我的键、值对存储在多个可变映射中。我可以看到其中的关键和价值。但是,现在我需要在 Scala 中将这些映射附加到 ArrayBuffer 或具有 String 类型的 List 上。因此,我可以遍历 Array 中的每个元素并继续进行。 请帮忙。

示例代码。

val X= scala.collection.mutable.Map[String, String]()

  X += ("Name" -> "Raghav")
  X += ("Home" -> "Gurgaon")

val Y= scala.collection.mutable.Map[String, String]()

  Y += ("Name" -> "Vikrant")
  Y += ("Home" -> "Noida")

var JobConfigs = scala.collection.mutable.ArrayBuffer.empty[String]

JobConfigs += X
JobConfigs += Y

【问题讨论】:

  • 感谢您的反馈。基本上,我想在 ArrayBuffer 的每个元素上存储键值对的 Map。我已经能够通过以下方式将地图附加到 ArrayBuffer - JobConfigs += X.toString() JobConfigs += Y.toString() println(JobConfigs) ArrayBuffer(Map(Name -> Raghav, Home -> Gurgaon), Map (Name -> Vikrant, Home -> Noida)) 现在我需要遍历 ArrayBuffer 的每个元素;然后遍历 Map 并打印它的键和值。它的抛出问题 - for (e
  • 将了解基础知识。到目前为止,在 Python 上工作的数据类型更简单。
  • 如果你愿意,你可以分享你想做什么(所有你的问题)_我将提供一个答案,解释你如何在_idiomatic上做到这一点 斯卡拉。没有那么多可变性并使用正确的类型。

标签: scala


【解决方案1】:

来自您的评论:

它的投掷问题 - for (e <- JobConfigs) { for ((k, v) <- e) { println("Key:" + k + ", Value:" + v) } }

这没有意义;因为您的 JobConfigsArrayBuffer[String]e 将是 String 并且不包含任何对。如果您更改 JobConfigs 的类型,它工作,无需其他更改:

var JobConfigs = scala.collection.mutable.ArrayBuffer.empty[Map[String, String]]

或者,你可以有

var JobConfigs = scala.collection.mutable.ArrayBuffer.empty[(String, String)]
JobConfigs ++= X
JobConfigs ++= Y

for ((k, v) <- JobConfigs) { println("Key:" + k + ", Value:" + v) }

旁注:

  1. JobConfigs 应声明为 val,除非您稍后声明 JobConfigs = ...。即使你这样做了,这通常也不是一个好主意。

  2. 局部变量的惯用名称以小写字母开头:xyjobConfigs

【讨论】:

    【解决方案2】:

    另一种使用案例类的方法。

    case class Person(Name: String, Home: String)
    
    var JobConfig = scala.collection.mutable.ArrayBuffer[Person]()
    
    JobConfig += Person("Raghav", "Gurgaon")
    JobConfig += Person("Vikrant", "Noida")
    
    for(i <- JobConfig){
      println(s"home :${i.Home} , name : ${i.Name}")
    }
    
    Output: 
    home :Gurgaon , name : Raghav
    home :Noida , name : Vikrant 
    

    【讨论】:

    • 这不是 OP 想要的。 "我需要将这些映射附加到 ArrayBuffer 或 List"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 2016-07-21
    • 2019-09-10
    • 2018-03-22
    • 2020-08-17
    • 2020-01-27
    相关资源
    最近更新 更多