如何声明用户可以指定维度的数组?
我想要一个可以做到这一点的函数/数据结构:
func(int dim){
if(dim == 1)
int[] array;
else if (dim == 2)
int[][] array;
else if (dim == 3)
int[][][] array;
..
..
.
}
有人知道怎么做吗?
I want a function / data structure that can do this:
func(int dim){
if(dim == 1)
int[] array;
else if (dim == 2)
int[][] array;
else if (dim == 3)
int[][][] array;
..
..
.
}
anyone know how?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
编辑
或者您可以使用 Array.newInstance(int.class, 大小)。其中,sizes 是包含所需大小的
int[]
。它会工作得更好,因为您实际上可以将结果转换为int[][][]...
原始答案
您可以使用
int[]
和Object[]
是Object
。假设您想要一个矩形多维数组,其大小由列表大小给定,您将失去所有静态类型检查,但只要您想要动态维度的数组,这种情况就会发生。
Edit
Or you could use Array.newInstance(int.class, sizes). Where sizes is an
int[]
containing the desired sizes. It will work better because you could actually cast the result to anint[][][]...
Original Answer
You could use the fact that both
int[]
andObject[]
areObject
s. Given that you want a rectangular multidimensional array with sizes given by the list sizesYou lose all static type checking, but that will happen whenever you want a dynamically dimensioned array.
如果您的目的是创建一个真正的动态数组,那么您应该查看 JDK 中的 Array 对象。您可以使用它来动态生成任何维度的数组。下面是一个示例:
创建数组对象后,您可以使用 java.lang.reflect.Array 类的方法来访问、添加、删除所创建的多维数组中的元素。还包括确定数组实例长度的实用方法。
您甚至可以使用以下方法检查数组的维度:
If your purpose is to create a truly dynamic array, then you should look at the Array object in the JDK. You can use that to dynamically generate an array of any dimension. Here is an example:
Once the array Object has been created, you can use the methods of the java.lang.reflect.Array class to access, add, remove elements from the multi-dimension array that was created. In also includes utility methods to determine the length of the array instance.
You can even check the dimension of the array using:
人们已经发布了很好的解决方案,但我认为如果将动态多维数组包装到一个类中,它可以使用任何数据结构来表示多维数组,这会很酷(也是很好的做法)。我使用哈希表,因此您几乎拥有无限的大小维度。
你可以像这样使用这个类:
People have post good solutions already, but I thought it'd be cool (and good practice) if you wrap the dynamic multidimensional array into a class, which can use any data structure to represent the multi-dimensional array. I use hash table so you have virtually unlimited size dimensions.
and you can use the class like this:
像下面这样的类怎么样?
What about a class like following?