我正在尝试创建一个键=>值Hashmap。
首先,我有一个由 <br />
分隔的字符串。然后,我用 split()对其进行分割(以独立获取每个字符串)。
然后,我需要用“ =” 拆分每个结果。第一部分是键(我需要它是一个字符串),第二部分是值(一个int)
现在我有
val formules = objInput.getString(Constants.formules)
val hashmap = HashMap<String, Int>()
val resSplit = formules.split("<br />")
resSplit.forEach {
val splitFormule = it.split(" = ")
val key = splitFormule.elementAt(0)
val value = splitFormule.elementAt(1)
Log.i(TAG, "$key")
}
尝试显示值时出现此错误:
索引:1,大小:1
答案 0 :(得分:1)
您已经说过,您忘记了检查字符串是否甚至包含gremlin> g.V(10).fold().coalesce(unfold(),store('error').by(constant('x'))).cap('error')
==>[x]
的条件。
一些注意事项:您也可以将elementAt
替换为get
或indexing operator(例如=
)。
您可能还对destructuring感兴趣,例如您的拆分也可以编写如下:
splitFormule[0]
最后一个变种,如果没有任何关联的键,则跳过键:
val (key, value) = it.split(" = ") // no need to extract the values from the array, if you know how the splitted data looks like
// you may even want to use the following if there could potentially be more than 1 '=' in the value part
val (key, value) = it.split(" = ", limit = 2) // at most 2 parts
答案 1 :(得分:1)
请注意输入是否正确。空格是相关的。 <br />
不同
<br/>
和=
中的数据与<space>=<space>
不同。假设您的输入看起来像这样:
foo = 3<br />bar = 5<br />baz = 9000
然后,您可以使用以下简单表达式创建地图:
val map = formules
.splitToSequence ("<br />") // returns sequence of strings: [foo = 3, bar = 5, baz = 9000]
.map { it.split(" = ") } // returns list of lists: [[foo, 3 ], [bar, 5 ], [baz, 9000]]
.map { it[0] to it[1] } // return list of pairs: [(foo, 3), (bar, 5), (baz, 9000)]
.toMap() // creates a map from your pairs