首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何计算多维阵列中的元素数?

如何计算多维阵列中的元素数?
EN

Stack Overflow用户
提问于 2017-01-15 09:30:48
回答 3查看 811关注 0票数 1

自从我学了二维数组之后我就一直有这个问题..。我希望有人能为我澄清一些事情。

以下是我所知道的

int[] x=新int2;

这个一维数组有两个元素。

int y=new int2;

这个二维数组有六个元素,对吗?(2x3= 6)

但当我观察二维阵列的制作方法时,

  1. 首先,在堆栈中生成一个名为y的引用类型变量,该变量可以存储二维数组的内存地址。
  2. 然后,在堆中创建一个具有两个元素的对象,该对象可以存储一维内存地址。
  3. 然后再构造另一个二维数组,每个数组由3个元素组成,可以存储int类型值。这两个一维数组的内存地址被赋值给先前在对象中创建的两个元素。
  4. 然后将该对象的内存地址分配给堆栈中的y变量。

现在我遇到的问题是,在这个对象开始时只有两个元素,对吗?,这不意味着二维数组有两个元素。两个一维数组各有3个元素?

所有这些问题都困扰着我,因为y.length = 2y.length =3

如果我错了,请纠正我,希望有人能帮我。谢谢

EN

回答 3

Stack Overflow用户

发布于 2017-01-15 09:40:43

是的,你是完全正确的。Java本身没有二维数组。它所拥有的只是包含数组的数组,以及用于创建数组的语法糖(new int[2][3])。

但是,您确实可以拥有一个包含不同长度数组的数组:

代码语言:javascript
复制
int[][] array = new int[2][];
array[0] = new int[5];
array[1] = new int[3];
System.out.println(Arrays.deepToString(array));
// prints [[0, 0, 0, 0, 0], [0, 0, 0]]

因此,它得到一个int[][],并想知道它包含多少个整数,需要循环遍历外部数组,并对内部数组的长度进行求和。除非您保证所有内部数组都具有相同的长度。在这种情况下,可以将外部数组的长度乘以任何内部数组的长度。

票数 2
EN

Stack Overflow用户

发布于 2017-01-15 10:39:55

在Java中,多维数组实际上是数组的数组。例如,名为arr的二维数组变量如下所示:

代码语言:javascript
复制
int arr[][] = new int[4][5];

这将分配一个4×5的数组并将其分配给arr。从概念上讲,这个数组将类似于图中所示的数组:

为多维数组分配内存时,只需为第一个(最左边)维度指定内存。您可以单独分配剩余的维度。例如:

代码语言:javascript
复制
int twoD[][] = new int[4][];
twoD[0] = new int[5];
twoD[1] = new int[5];
twoD[2] = new int[5];
twoD[3] = new int[5];

虽然在这种情况下单独分配二维数组没有好处,但可能有一些好处。与手动分配维度一样,您不需要为每个维度分配相同数量的元素。如前所述,由于多维数组实际上是数组的数组,所以每个数组的长度都在您的控制之下。

票数 1
EN

Stack Overflow用户

发布于 2017-01-15 09:48:46

您可以使用这个method来平平多维数组,并在其上调用List#size()

它甚至会将嵌套的列表、集、地图和队列夷为平地。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41659672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档