加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在Scala中迭代三个以上的数组

发布时间:2020-12-16 09:08:30 所属栏目:安全 来源:网络整理
导读:我必须将一堆愚蠢的逗号分隔的字符串转换为最终的对象.我首先将字符串拆分为 Arrays.然后我需要同时迭代所有这些并从四个值中构建一个Object. val s1 = Array(1,2,3)val s2 = Array("a","b","c")val s3 = Array(10,20,30)val s4 = Array("u","v","w") 目标Ob
我必须将一堆愚蠢的逗号分隔的字符串转换为最终的对象.我首先将字符串拆分为 Arrays.然后我需要同时迭代所有这些并从四个值中构建一个Object.

val s1 = Array(1,2,3)
val s2 = Array("a","b","c")
val s3 = Array(10,20,30)
val s4 = Array("u","v","w")

目标Object如下所示:

case class Data(a: Int,b: String,c: Int,d: String)

第一个Data对象必须打印

Data(1,a,10,u)

等等.我找到了三个项目的解决方案:

(s1,s2,s3).zipped foreach { (v1,v2,v3) =>
  println(v1,v3)
}

哪个印刷品:

(1,10)
(2,b,20)
(3,c,30)

如果有四个或更多阵列,则不会这样做. Zipped没有为4元组定义:

error: value zipped is not a member of (Array[Int],Array[String],Array[Int],Array[String])

我的Scala有点生疏,所以也许我错过了明显的东西(比如带索引的迭代或其他东西).

解决方法

它不漂亮,但应该工作(具有任意数量的行长)

val items: Array[Array[Any]] = Array (
  Array(1,3),Array("a","c"),Array(10,30),Array("u","w")
)

items.transpose.map {
  case Array(a: Int,d: String) => Data(a,d)
}
// Array(Data(1,u),Data(2,v),Data(3,30,w))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读