从 Map 的列表表示到 Scala 中的真实 Map

2024-01-14

我想将键/值的 Seq 转换为 Map。序列的第一个元素被保留,所以对列表从位置 1 开始.

问题是:是否可以用更实用的方式来实现这个功能?

def list2Map(plainMap:Seq[String]) = {
  var map = Map[String, String]()
  var idx = 1;
  while(plainMap.size > idx) {
    val key = plainMap(idx)
    idx += 1
    val value = plainMap(idx)
    idx += 1

    map = map + (key -> value)
  }

  map
}

assert( list2Map( Seq("reserved slot","key0","value0","key1","value1","key2","value2") ) == Map( ("key0"->"value0"),("key1"->"value1"),("key2"->"value2") ) )

我是 Scala 的新手,我知道有很多不同的方法来迭代集合,但我没有找到 forEach 方法来每次迭代读取两个元素(从元素 1 开始)。

PS:谢谢各位。从大家的反应中我学到了很多!!


list.drop(1).grouped(2).map { x => x.head -> x.last }.toMap

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Map 的列表表示到 Scala 中的真实 Map 的相关文章

  • 函数式 Scala 中的选择排序

    我正在学习 Scala 编程 并编写了选择排序算法的快速实现 然而 由于我对函数式编程还不太了解 所以在转换为更 Scala 风格时遇到了困难 对于 Scala 程序员来说 如何使用 Lists 和 vals 来做到这一点 而不是回到我的命
  • Java时间转正常格式

    我有 Java 时间1380822000000 我想转换为我可以阅读的内容 import java util Date object Ws1 val a new Date 1380822000000 toString 导致异常 warnin
  • 如何将 Spark DataFrame 以 csv 格式保存在磁盘上?

    例如 这样的结果 df filter project en select title count groupBy title sum 将返回一个数组 如何将 Spark DataFrame 作为 csv 文件保存在磁盘上 Apache Sp
  • 如何使用 zio-test 测试异常情况

    我有以下功能 我想测试 def people id Int RIO R People 如果有 People 则此函数返回 Peopleid 分别 如果没有则失败 例如 IO fail ServiceException s No People
  • 并行化斐波那契序列生成器

    我正在学习并行化 在一项练习中 我得到了一些我应该提高性能的算法 其中之一是斐波那契数列生成器 array 0 0 array 1 1 for q 2 q lt MAX q array q array q 1 array q 2 我怀疑 这
  • 使用 mapWithState Spark Streaming 过滤部分重复项

    我们有一个DStream 比如 val ssc new StreamingContext sc Seconds 1 val kS KafkaUtils createDirectStream String TMapRecord ssc Pre
  • 如何在对象的多个方法上使用 functools.partial 并无序冻结参数?

    我发现 functools partial 非常有用 但我希望能够无序地冻结参数 您想要冻结的参数并不总是第一个 并且我希望能够将其应用于多个一次在类上使用方法 以创建一个代理对象 该对象具有与底层对象相同的方法 除了它的一些方法参数被冻结
  • 无法在 NetBeans 7.4rc1 上安装 nb-scala

    我已经安装了 NB 7 4rc1 并从下载了 nb scalahttp sourceforge net projects erlybird files nb scala http sourceforge net projects erlyb
  • 压缩很多小字符串的算法?

    我正在寻找一种压缩小 ASCII 字符串的算法 它们包含大量字母 但也可以包含数字和很少的特殊字符 它们很小 平均约为 50 100 字节 最多 250 个字节 例子 Android show EditText setError above
  • 无法证明与路径相关类型的等价性

    为什么最后一个summon编译失败 我该怎么做才能让它编译 import java time LocalDateTime LocalTime trait Circular T type Parent given localTimeCircu
  • 比 BMH (Boyer–Moore–Horspool) 更快的算法

    您会使用哪种算法来搜索短文本中的短子字符串 简而言之 我的意思是子字符串有 5 10 个字符 字符串有 255 个字符 我正在考虑根据输入数据长度选择算法 哪种算法对于较长的输入更好 Try Turbo BM http www igm un
  • Scala:为什么 Actor 是轻量级的?

    是什么让演员如此轻盈 我什至不确定它们是如何工作的 它们不是单独的线程吗 当他们说轻量级时 他们的意思是每个参与者都没有映射到单个线程 JVM 提供共享内存线程 锁作为主要形式 并发抽象 但分享了 内存线程是相当重量级的 并招致严重的绩效处
  • 查找一个二维矩阵是否是另一个二维矩阵的子集

    最近我参加了一个黑客马拉松 我了解到一个问题 试图在 2d 矩阵中找到网格形式的模式 模式可以是 U H 和 T 并由 3 3 矩阵表示 假设我想展示 H 和 U 1 0 1 1 0 1 1 1 1 gt H 1 0 1 gt U 1 0
  • Scala 正则表达式替换为匿名函数

    在 Ruby 中 我可以通过以下方式替换字符串中的字符 a one1two2three a gsub d e e to i 1 gt one2two3three 从第二行开始评估块的结果将替换模式中匹配的内容 我们可以在 Scala 中做类
  • 函数式语言中的部分求值和函数内联有什么区别?

    我知道 函数内联就是用函数定义代替函数调用 部分评估是在编译时评估程序的已知 静态 部分 在 C 等命令式语言中 两者之间存在区别 其中运算符与函数不同 但是 在像 Haskell 这样的函数式语言 其中运算符也是函数 中 两者之间有什么区
  • 如何将 csv 文件读取为键值对的映射

    我的 csv 文件中有数据 例如 value key A Name B Name C Name 24 Age 25 Age 20 Age M Gender F Gender 我想解析它以生成以下地图 Map Name gt List A B
  • 测量数组的“无序”程度

    给定一个值数组 我想找到总 分数 其中每个元素的分数是数组中出现在其之前的具有较小值的元素的数量 e g values 4 1 3 2 5 scores 0 0 1 1 4 total score 6 O n 2 算法很简单 但我怀疑可以通
  • Scala:var List 与 val MutableList

    在 Odersky 等人的 Scala 书中 他们说使用列表 我还没有从头到尾读过这本书 但所有的例子似乎都使用了 val List 据我了解 还鼓励人们使用 vals 而不是 vars 但在大多数应用程序中 使用 var List 或 v
  • 关于逻辑/算法的想法以及如何防止线程写入 Sql Server 中的竞争

    我有以下逻辑 public void InQueueTable DataTable Table int incomingRows Table Rows Count if incomingRows gt RowsThreshold async
  • 寻找簇的中心

    我有以下问题 进行抽象以找出关键问题 我有 10 个点 每个点与其他点有一定距离 我想要 能够找到簇的中心 即与其他点的成对距离最小的点 令 p j p k 表示点 j 和 k 之间的成对距离p i 是簇的中心点 iff p i s t m

随机推荐