在java中制作混合二维数组

问题描述 投票:0回答:6

我想要一个二维矩阵,其中一行是字符串,另一行是整数。 那可能吗? 或者我是否必须将 int 保存为字符串,然后再次将它们转换为 int?

java arrays string matrix int
6个回答
9
投票

不如使用一个物体。

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);

3
投票

不,这是不可能的。数组对象只能有一种数据类型。您可以创建一个同时具有

int
String
作为属性的类并使用它。永远不要使用
Object[][]
,即使有这样做的诱惑,这是一种邪恶的解决方法,黑客的失败多于成功。如果
Object
是一项可靠的技术,那么他们就不会引入泛型集合!


1
投票

您可以创建对象 2D 数组并在其中放置字符串和整数,但我不确定在数组中使用混合类型是否是个好主意。您可能应该更多地描述您的问题,以便我们找到更好的方法。


0
投票

您可以创建一个对象类型的数组并在其中存储任何非原始对象。 当您检索它们时,您需要确保检查它们的类。

if(objArray[0] instanceof String) {
    // do string stuff
} else if(objArray[0] instanceof Integer) {
    // do integer stuff
}

等等

我认为你最好创建一个新类,它可以存储你想要的类型的对象,并使用 getter 和 setter 检索它们。更安全、更稳定。


0
投票

如果你做一个

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... 
    ...
}

-1
投票

是的。如果您声明为对象矩阵,那么您可以存储字符串和整数(而不是 int),但正确检索它们将变得困难:)

© www.soinside.com 2019 - 2024. All rights reserved.