我想要一个二维矩阵,其中一行是字符串,另一行是整数。 那可能吗? 或者我是否必须将 int 保存为字符串,然后再次将它们转换为 int?
不如使用一个物体。
class MyEntry {
String foo;
int number;
}
MyEntry[] array = new MyEntry[10];
但是,如果您出于某种不幸的原因绝对必须,则可以使用两种类型 - 仅通过
Object
超类型。
Object[][] arr = new Object[2][10];
arr[0][0] = "Foo";
arr[1][0] = new Integer(50);
不,这是不可能的。数组对象只能有一种数据类型。您可以创建一个同时具有
int
和 String
作为属性的类并使用它。永远不要使用 Object[][]
,即使有这样做的诱惑,这是一种邪恶的解决方法,黑客的失败多于成功。如果 Object
是一项可靠的技术,那么他们就不会引入泛型集合!
您可以创建对象 2D 数组并在其中放置字符串和整数,但我不确定在数组中使用混合类型是否是个好主意。您可能应该更多地描述您的问题,以便我们找到更好的方法。
您可以创建一个对象类型的数组并在其中存储任何非原始对象。 当您检索它们时,您需要确保检查它们的类。
if(objArray[0] instanceof String) {
// do string stuff
} else if(objArray[0] instanceof Integer) {
// do integer stuff
}
等等
我认为你最好创建一个新类,它可以存储你想要的类型的对象,并使用 getter 和 setter 检索它们。更安全、更稳定。
如果你做一个
Object
的二维数组,就像 Object[][] myArray = new Object[x][y]
中那样,其中 x 和 y 是数字,你就可以做到这一点。
您所要做的就是在使用对象之前将它们转换为预期的类型。例如
(String) myArray[0][3]
。
只有当您确切知道特定位置的对象是什么类型时,您才应该这样做。
但是,这样做通常不是一个好主意。更好的解决方案是定义自己的数据结构类,其中有一个 String 数组和一个 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...
...
}
是的。如果您声明为对象矩阵,那么您可以存储字符串和整数(而不是 int),但正确检索它们将变得困难:)