用java制作混合二维数组
我想要一个2D矩阵,一行是字符串,另一行是int。 可能吗?用java制作混合二维数组,java,arrays,string,matrix,int,Java,Arrays,String,Matrix,Int,我想要一个2D矩阵,一行是字符串,另一行是int。 可能吗? 还是必须将int保存为字符串,然后再将其转换为int?不,这是不可能的。数组对象只能有一个数据类型。您可以创建一个同时具有int和String属性的类,并使用它。永远不要使用对象[][],即使存在这样做的诱惑,这是一种邪恶的解决方法,黑客的失败多于成功。如果Object是一种可靠的技术,那么他们就不会为收集引入泛型了 不,这是不可能的。数组对象只能有一个数据类型。您可以创建一个同时具有int和String属性的类,并使用它。永远不要使
还是必须将int保存为字符串,然后再将其转换为int?不,这是不可能的。数组对象只能有一个数据类型。您可以创建一个同时具有
int
和String
属性的类,并使用它。永远不要使用对象[][]
,即使存在这样做的诱惑,这是一种邪恶的解决方法,黑客的失败多于成功。如果Object
是一种可靠的技术,那么他们就不会为收集引入泛型了 不,这是不可能的。数组对象只能有一个数据类型。您可以创建一个同时具有int
和String
属性的类,并使用它。永远不要使用对象[][]
,即使存在这样做的诱惑,这是一种邪恶的解决方法,黑客的失败多于成功。如果Object
是一种可靠的技术,那么他们就不会为收集引入泛型了 宁可使用对象
class MyEntry {
String foo;
int number;
}
MyEntry[] array = new MyEntry[10];
但如果必须,可以使用两种类型-仅通过对象
超类型
Object[][] arr = new Object[2][10];
arr[0][0] = "Foo";
arr[1][0] = new Integer(50);
而是使用一个对象
class MyEntry {
String foo;
int number;
}
MyEntry[] array = new MyEntry[10];
但如果必须,可以使用两种类型-仅通过对象
超类型
Object[][] arr = new Object[2][10];
arr[0][0] = "Foo";
arr[1][0] = new Integer(50);
您可以在二维数组中创建对象并将字符串和整数放在其中,但我不确定在数组中使用混合类型是否是个好主意。你们可能应该多描述一下你们的问题,这样我们才能想出更好的办法 您可以创建对象2D数组并将字符串和整数放在其中,但我不确定在数组中使用混合类型是否是个好主意。你们可能应该多描述一下你们的问题,这样我们才能想出更好的办法 是的。如果声明为对象矩阵,则可以存储字符串和整数(而不是int),困难在于正确检索它们:)是的。如果声明为对象矩阵,则可以存储字符串和整数(而不是int),困难在于正确检索它们:)如果执行对象的二维数组,则可以执行此操作,如在
object[]]myArray=new object[x][y]
中,x和y是数字
您所要做的就是在使用对象之前将其强制转换为预期的类型。例如,像(String)myArray[0][3]
只有当您确定特定位置的对象将是什么类型时,才应该这样做
然而,这样做通常不是一个好主意。更好的解决方案是定义自己的数据结构类,该类将字符串数组和int数组作为成员变量。例如:
public class myData {
String[] theStringArray;
int[] theIntArray;
public myData(String[] sArraySize, int[] iArraySize) {
this.theStringArray = new String[sArraySize];
this.theIntArray = new int[iArraySize);
}
...
// Additional getters / setters etc...
...
}
如果在
Object[]]myArray=newobject[x][y]
中对Object
进行二维数组,则可以执行此操作,其中x和y是数字
您所要做的就是在使用对象之前将其强制转换为预期的类型。例如,像(String)myArray[0][3]
只有当您确定特定位置的对象将是什么类型时,才应该这样做
然而,这样做通常不是一个好主意。更好的解决方案是定义自己的数据结构类,该类将字符串数组和int数组作为成员变量。例如:
public class myData {
String[] theStringArray;
int[] theIntArray;
public myData(String[] sArraySize, int[] iArraySize) {
this.theStringArray = new String[sArraySize];
this.theIntArray = new int[iArraySize);
}
...
// Additional getters / setters etc...
...
}
您可以创建对象类型的数组,并在其中存储任何非基本体对象。 当您检索它们时,您需要确保检查它们的类
if(objArray[0] instanceof String) {
// do string stuff
} else if(objArray[0] instanceof Integer) {
// do integer stuff
}
等等
我认为最好创建一个新类来存储所需类型的对象,并使用getter和setter检索它们。它更安全、更稳定。您可以创建对象类型的数组,并在其中存储任何非基本对象。 当您检索它们时,您需要确保检查它们的类
if(objArray[0] instanceof String) {
// do string stuff
} else if(objArray[0] instanceof Integer) {
// do integer stuff
}
等等
我认为最好创建一个新类来存储所需类型的对象,并使用getter和setter检索它们。它更安全、更稳定。这是可能的,但通常是一个非常糟糕的主意。您可以创建对象[]的数组,并向其中添加字符串和整数。但不要这样做。如果需要连接字符串和int,请创建一个这样做的类,然后创建此类型的一维对象集合或数组。是否重复?做一个包装或使用一个塑料袋是可能的,但这通常是一个非常糟糕的主意。您可以创建对象[]的数组,并向其中添加字符串和整数。但不要这样做。如果需要连接字符串和int,请创建一个这样做的类,然后创建此类型的一维对象集合或数组。是否重复?制作包装器或使用,但它可以是字符串和整数从中继承的类型。
Integer
s继承,int
不继承!一个Object[][]
数组对于这一点就像是在自己的脚上射击。如果我的答案是错误的,任何建议使用它的人都是错误的。出于这个目的,Integer在功能上等同于int。因此OP可以使用Integer对象,但不管怎样,这并不意味着他最初的建议是个好主意。但它可以是字符串和整数继承的类型。Integer
s继承,int
不继承!一个Object[][]
数组对于这一点就像是在自己的脚上射击。如果我的答案是错误的,任何建议使用它的人都是错误的。出于这个目的,Integer在功能上等同于int。所以OP可以使用Integer对象,但不管怎样,这并不能使他的原始建议成为一个好主意。无意冒犯,但两个单独的数组更糟糕。也许你是对的。我的主要目的是说明定义自己的数据结构会更好。无意冒犯,但两个单独的数组更糟。也许你是对的。我的主要目的是说明定义自己的数据结构