【问题标题】:Kotlin Array with named parameter equivalent of swift命名参数等效于 swift 的 Kotlin 数组
【发布时间】:2020-02-21 14:09:44
【问题描述】:

嗨,我是 Kotlin 的新手,我想做一个带有命名参数的数组。在 Swift 中我可以做到:

let analytics = ["organization_login": "toto", "organization_name": "titi", "lead_email": "tata"]

类型为:[String: String]

我查看了 kotlin 中的所有 Array 和 Arraylist,但找不到等价物。

我希望它能够为我的数组提供参数名称。

编辑

我误解了swift的语法,它似乎只是一个字典,所以我们只需要使用map。

【问题讨论】:

  • 我不太确定这个 swift 构造,但它看起来确实像 Map<String, String>
  • 即使在 Swift 中,这也不是一个数组。这是一本字典。

标签: arrays kotlin arraylist


【解决方案1】:

原因是[String: String]不是数组,是Dictionary

Kotlin 中 Dictionary 的等价物是Map

地图可以这样创建:

val map = mapOf("string_one" to "string_2", "string_3" to "string_4")

或者,如果你想改变它:

val mutableMap = mutableMapOf("string_one" to "string_2")

【讨论】:

  • 另外值得指出的是:与 Array 不同,Map 是无序的。因此,如果您需要映射按特定顺序排列,您应该使用保留迭代顺序的特定实现(例如 LinkedHashMap),或者使用其他东西。 (同样,你不能有多个映射同一个键;那是一个多重映射。)最后,你不能通过索引访问映射;相反,您查找特定键的值,例如map["string_one"](或等价的map.get("string_one"))返回"string_2"
【解决方案2】:

你需要使用Map作为

val map = mapOf("organization_login" to "toto", "organization_name" to "titi") 
// immutable map

您还可以将sortedMapOfhashMapOf linkedMapOf 等用于不同的基于算法的存储。

注意:如果您想稍后添加更多元素,请确保使用mutableMapOf

【讨论】:

  • 谢谢,正是我想要的
  • 很高兴能帮上忙,编码愉快!
猜你喜欢
  • 1970-01-01
  • 2018-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-31
  • 1970-01-01
相关资源
最近更新 更多