将 List[String] 转换为 Map[String,String]

Posted

技术标签:

【中文标题】将 List[String] 转换为 Map[String,String]【英文标题】:convert List[String] into Map[String,String] 【发布时间】:2021-12-21 00:34:19 【问题描述】:

任何人都可以帮我按索引将字符串列表转换为 Map:(0,1) 作为键值对,index(2,3) 作为第二对,index(3,4) 作为第三对。

示例:List("asd","fgh","qwe","tyu") 转换为 Map("asd"->"fgh", "qwe"->"tyu")

【问题讨论】:

如果有奇数和重复元素,没问题,我只希望结果为映射,将索引 (0,1) 作为键值对,将 (2,3) 索引作为键值对。 那么,如果是奇数,List 中的最后一个字符串应该被忽略并且不包含在Map 结果中? 应该考虑奇数字符串,但它应该显示奇数字符串 -> " "(空值) 空字符串"" 不是null 值。 对于一个奇数,我希望它为空字符串。 【参考方案1】:

这可以使用三种标准库方法来完成:

val list = List("asd","fgh","qwe","tyu")

list
  .grouped(2) // Group elements in pairs
  .map       // Convert pairs to tuples
    case a :: b :: Nil => a -> b   // Normal values to tuple
    case a :: Nil      => a -> ""  // Final value if list size is odd
  
  .toMap // Convert List[(A, B)] to Map[A,B]

由于您正在创建Map,因此如果多次出现相同的偶数值,则会出现重复的键,并且只有最后一对会出现在生成的Map 中。

(如果您是 Scala 新手,a -> b 语法是创建元组 (a, b) 的另一种方式,可以在这种情况下使用,以明确在一对)

【讨论】:

以上是关于将 List[String] 转换为 Map[String,String]的主要内容,如果未能解决你的问题,请参考以下文章

使用 java 8 流转换 List<Map<String,String>> 与“,”分隔的字符串值

将 List[String] 转换为 Map[String,String]

Java 8:将 Map<String, List<String>> 转换为 Map<String, String[]> [重复]

如何将map<string list<>>转换成城map<string,object>

如何将地图 List<Map<String, String>> myList 列表转换为 Java 中的 Spark Dataframe?

Dart:尽管强制转换,但无法将 List<dynamic> 转换为 List<Map<String, dynamic>>