【问题标题】:Concat two Scala Array连接两个 Scala 数组
【发布时间】:2017-03-30 02:10:46
【问题描述】:

我有两个这样的数组:

val l1 = Array((1,2,3), (6,2,-3), (6,2,-4))
val l2 = Array("a","b","c")

我想将数组中 l2 的值放在 l1 中的相同位置,并获得这样的最终数组

Array((1,2,3,"a"), (6,2,-3,"b"), (6,2,-4,"c"))

我在想这样的事情:

val l3 = l1.map( code...)

但我不知道如何在 l1 上的地图上迭代 l2。
你有什么想法吗?

【问题讨论】:

    标签: arrays scala join concat


    【解决方案1】:

    您需要 map 覆盖用于访问每个数组中的元素的索引。

    (0 until l1.length).map{ idx =>
      (l1(idx)._1, l1(idx)._2, l1(idx)._3, l2(idx))
    }
    res0: IndexedSeq[(Int, Int, Int, Char)] = Vector((1,2,3,a), (6,2,-3,b), (6,2,-4,c))
    

    【讨论】:

    • 非常感谢
    • 您应该使用l1.indices 而不是(0 until l1.length) 以防止出现错误。
    • @corvus_192,一个很好的建议,但 marios 仍然有更好的解决方案。
    【解决方案2】:

    可以使用Zipping 以这种方式组合集合。

    l1.zip(l2).map{ case (x,y) => (x._1, x._2, x._3, y) }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-21
      相关资源
      最近更新 更多