Java scala中的多变量循环
我想在循环中迭代两个变量并填充映射Java scala中的多变量循环,java,scala,Java,Scala,我想在循环中迭代两个变量并填充映射 for (int i = 0, j = 0; i < header.size(); i++, j++) { map.put(header.get(i), cols.get(j)); } for(inti=0,j=0;icols.size 如果headers.size==cols.size或者如果您不想要没有相等列的头,您可以使用list.zip(另一个列表) 我想建议 val map = (0 until header.size) map { n
for (int i = 0, j = 0; i < header.size(); i++, j++)
{
map.put(header.get(i), cols.get(j));
}
for(inti=0,j=0;i
我们如何在Scala中实现这一点?请问有人能帮忙吗?
感谢您的帮助。在Scala中,您可以使用
zip
来执行此操作,如:
header.zip(cols).toMap
一种方法是将
map
与每个条目的索引一起映射到标题上,获得相同索引的col
,并创建映射
鉴于
scala> val headers = Seq("h1", "h2", "h3", "h4")
headers: Seq[String] = List(h1, h2, h3, h4)
scala> val cols = Seq("c1", "c2", "c3")
cols: Seq[String] = List(c1, c2, c3)
headers上的map
当headers.size>cols.size
如果headers.size==cols.size
或者如果您不想要没有相等列的头,您可以使用list.zip(另一个列表)
我想建议
val map = (0 until header.size) map { n => header.get(n) -> header.col(n) } toMap
作为一个相当幼稚的翻译
这假设标题只是一个带有几个定义的任意对象,不是一个正确的集合。当我在programmer中添加这行代码时,它不会重复多个记录。@user1734980,我想你可以为此粘贴一个可运行的代码。如果您的标题
或cols
不是Scala集合,可能需要将其转换为Scala集合。为什么这里需要两个变量?变量i
和j
总是有相同的值,不是吗?那么为什么不使用i
而不是j
?如果您的实际代码更复杂,请向我们展示一些更好的示例。
scala> headers.zip(cols)
res52: Seq[(String, String)] = List((h1,c1), (h2,c2), (h3,c3))
val map = (0 until header.size) map { n => header.get(n) -> header.col(n) } toMap