我想要一个带有一行字符串的2D矩阵,另一行带有整数。 那可能吗? 或者我必须将整数保存为字符串,然后再将它们转换为int?
答案 0 :(得分:7)
而是使用对象。
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);
答案 1 :(得分:3)
不,不可能。数组对象只能有一种数据类型。您可以创建一个同时具有int
和String
属性的类并使用它。永远不要使用Object[][]
,即使有诱惑这样做,这是一个邪恶的解决方法,黑客失败超过他们成功。如果Object
是一种合理的技术,那么他们就不会为收集引入泛型!
答案 2 :(得分:1)
你可以创建Objects 2D数组并放置字符串和整数,但我不确定在数组中是否有混合类型是个好主意。您应该更多地描述您的问题,以便我们能够找到更好的方法。
答案 3 :(得分:0)
是的。如果你声明为对象的矩阵然后你可以存储字符串和整数(而不是int),难以在正确检索它们之后:)
答案 4 :(得分:0)
如果您在Object
中执行Object[][] myArray = new Object[x][y]
的2D数组,其中x和y是数字,则可以执行此操作。
您需要做的就是在使用对象之前将其转换为预期的类型。比如(String) myArray[0][3]
。
如果您确定特定位置的Object将是什么类型,那么你应该这样做。
然而,以这种方式做事通常不是一个好主意。更好的解决方案是定义自己的数据结构类,该类具有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...
...
}
答案 5 :(得分:0)
您可以创建Object类型的数组,并在其中存储任何非原始Object。 当你检索它们时,你需要确保你检查他们的课程。
if(objArray[0] instanceof String) {
// do string stuff
} else if(objArray[0] instanceof Integer) {
// do integer stuff
}
等
我认为你最好创建一个新类,它可以存储你想要的类型的对象,并使用getter和setter来检索它们。它更安全,更稳定。