在java中创建混合2D数组

时间:2013-06-25 11:51:45

标签: java arrays string matrix int

我想要一个带有一行字符串的2D矩阵,另一行带有整数。 那可能吗? 或者我必须将整数保存为字符串,然后再将它们转换为int?

6 个答案:

答案 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)

不,不可能。数组对象只能有一种数据类型。您可以创建一个同时具有intString属性的类并使用它。永远不要使用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来检索它们。它更安全,更稳定。