You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将List[String]按相邻索引两两配对转换为Map[String,String]

实现方案

直接使用Scala集合自带的grouped方法即可快速实现需求,这是最简洁且可读性最高的写法:

// 示例输入
val inputList = List("asd","fgh","qwe","tyu")
// 转换逻辑
val resultMap = inputList
  .grouped(2) // 按每2个元素为一组拆分列表
  .collect { case List(key, value) => key -> value } // 匹配每组的两个元素,转为键值对,自动忽略落单元素
  .toMap // 转为Map结构

运行后输出结果和示例完全一致:Map("asd" -> "fgh", "qwe" -> "tyu")

边界情况处理

如果业务场景要求列表长度必须为偶数,不允许存在落单元素,可以先加合法性校验:

if (inputList.size % 2 != 0) {
  throw new IllegalArgumentException("输入列表长度必须为偶数,无法两两配对")
} else {
  inputList.grouped(2).map { case List(k, v) => k -> v }.toMap
}

其他可选实现

如果不想用grouped方法,也可以通过索引分组的方式实现,效果完全一致:

val resultMap = inputList
  .zipWithIndex
  .groupBy(_._2 / 2)
  .values
  .collect { case Seq((k, _), (v, _)) => k -> v }
  .toMap

内容的提问来源于stack exchange,提问作者Hola Hola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:06:03