Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Scala(或Java)中传递2D数组的列_Java_Arrays_Scala - Fatal编程技术网

在Scala(或Java)中传递2D数组的列

在Scala(或Java)中传递2D数组的列,java,arrays,scala,Java,Arrays,Scala,如果我们有一个类似scala的数组 val myArray=myObject(N)(M) 将该数组的一行传递给函数非常容易,如下所示: myFunction(myArray(i)) 是否可以传递一列而不是一行?或者我必须将该行的所有元素复制到新的1d数组中并传递该数组吗?如果您仅限于使用数组,则必须复制所有元素。如果使用数组的包装版本,当然可以使用不同的包装方式,包括使用沿列向下移动的内容。您可以使用映射(创建临时副本),如下所示: 也适用于任何给定的二维阵列,例如 val a = Array.

如果我们有一个类似scala的数组 val myArray=myObject(N)(M)

将该数组的一行传递给函数非常容易,如下所示:

myFunction(myArray(i))


是否可以传递一列而不是一行?或者我必须将该行的所有元素复制到新的1d数组中并传递该数组吗?

如果您仅限于使用数组,则必须复制所有元素。如果使用数组的包装版本,当然可以使用不同的包装方式,包括使用沿列向下移动的内容。

您可以使用
映射(创建临时副本),如下所示:


也适用于任何给定的二维阵列,例如

val a = Array.tabulate(2,3){_+2*_}
Array(Array(0, 2, 4), Array(1, 3, 5))
应用换位,然后以与行相同的方式获取列

val t = a.transpose
Array(Array(0, 1), Array(2, 3), Array(4, 5))


它给出了第二列。

我有一个元组集合框架,允许您提取列,并且具有类型安全优势:
val t = a.transpose
Array(Array(0, 1), Array(2, 3), Array(4, 5))
t(1)
Array(2, 3)