Scala中如何将含键值对的Seq[String]转换为Map[String, String]
如何将带=分隔符的字符串序列转换为Map
针对你给出的Scala场景,可以通过以下方式实现转换:
基础实现(假设所有字符串格式正确)
val keysVals = Seq("Country=France", "City=Paris") val result = keysVals.map { s => // 用split("=", 2)确保只分割一次,避免值中包含=时被错误拆分 val Array(key, value) = s.split("=", 2) key -> value }.toMap
执行后result即为Map("Country"->"France", "City"->"Paris")。
容错实现(处理格式不正确的元素)
如果序列中可能存在不含=的无效字符串,可以用flatMap过滤掉这类元素,避免程序抛出异常:
val keysVals = Seq("Country=France", "City=Paris", "InvalidString") val result = keysVals.flatMap { s => s.split("=", 2) match { case Array(k, v) => Some(k -> v) case _ => None // 跳过格式错误的元素 } }.toMap
此时result会忽略"InvalidString",仅保留格式正确的键值对。
内容的提问来源于stack exchange,提问作者Didi
相关产品推荐
相关产品推荐

