Java中的2D数组操作

时间:2013-03-01 18:06:29

标签: java arrays oop multidimensional-array

我正在尝试使用这个二维数组,它表示图像的灰度...我想通过平均2x2块并将每个值替换为2x2网格的平均值来对图像进行像素化...例如, 如果输入是数组

   2,  4, 31, 31   
   3,  3, 21, 41
   1,  2, 10, 20
   3,  2, 20, 30

然后你开始看第一个2x2子阵列(从左上角开始)

   2,  4
   3,  3

并找到该子阵列的平均值(即(2 + 4 + 3 + 3)/ 4 = 3)。在返回的数组中,第一个2x2子数组将是

   3,  3
   3,  3

然后我们看看下一个2x2块

   31,  31
   21,  41

平均值为31,输出中的下一个2x2块将为

   31,  31
   31,  31

我想知道什么方法可以最好地解决这个问题。不太确定如何解决它...提前谢谢

1 个答案:

答案 0 :(得分:2)

您可以非常轻松地在Java中声明多维数组:

double matrix[][] = new double[size][size];

然后,您可以使用标准下标来处理各个元素。例如:

int row = 2;
int col = 3;
double val = matrix[row][col]; // etc.
matrix[row][col] = 7;

但从技术上讲,Java没有多维数组。相反,它有数组数组。访问多维数组元素可能比访问(一维)数组慢一点。您始终可以编写自己的Matrix类,将值维护为单个数组,并根据矩阵坐标计算下标。我不确定在性能方面是否值得。此外,还有大量可用于Java的矩阵包。对 java矩阵包进行网络搜索可以获得大量优质点击。对于你想要做的事情,它们都可能有点过分。