数组 – 如何在Scala中以算法方式实例化和操作多维数组

我正在尝试编写一个程序来通过Scala Gui来管理数据库,并且在将数据输入表格并填充列标题的方式上格式化数据时遇到了很多麻烦.为此,我被告知我需要使用Array [Array [Any]]而不是像我一直使用的ArrayBuffer [ArrayBuffer [String]].

我的问题是我试图填充这些数组的方式是模块化的:我试图使用相同的函数从MySQL数据库中的不同表中绘制,每个表都有不同数量的列和条目.

我已经能够(我认为)定义一个二维数组

val Data = new Array[Array[String]](numColumns)(numRows)

但我还没有找到任何方法来编辑这个新阵列中的单个单元格.

Data(i)(j)=Value  //or
Data(i,j)=Value

不起作用,并给我关于“更新”功能的错误

我确信这不可能像我一样复杂,所以用这种语言管理这些东西的简单方法是什么?

最佳答案
您不需要将数据读入阵列数组 – 只需将它转换为表格构造器时将其转换为该格式 – 这很容易,如我对其他问题的回答所示:How do I configure the Column names in a Scala Table?

如果你正在创建一个2D数组,你想要的成语是

val data = Array.ofDim[String](numColumms, numRows)

(还有新的Array [String](numColumns,numRows),但不推荐使用.)

使用数据(i)(j)访问数组数据的元素(i,j)(记住它们从0开始).

但一般来说,除非有充分的理由,否则应该避免使用可变集合(如Array,ArrayBuffer).请尝试使用Vector.

如果不知道从数据库中检索数据的格式,就无法说明如何将其放入集合中.

更新:

您也可以将类型信息放在左侧,因此以下内容相同(根据您的喜好自行决定):

val a: Array[Array[String]] = Array.ofDim(2,2)
val a = Array.ofDim[String](2,2)

要解释访问/更新元素的语法:在Java中,多维数组只是一个数组数组.所以这里,a(i)是a的元素i,它是一个Array [String],因此a(i)(j)是该数组的元素j,它是一个String.

转载注明原文:数组 – 如何在Scala中以算法方式实例化和操作多维数组 - 代码日志