4

我是 java 新手,我想创建一个二维数组,其中行是静态的,但列是动态的。

double [][] lastSecArray = new double [2][41];
int lastValue = -1;
public foo (){
   lastValue++;
   lastSecArray[0][lastValue] = st_ms;
   //more code here
}

lastValue 的值增加,当它达到 41 时,我的程序让我的数组索引超出范围。这是我应该期待的。

如何使 teh 数组的列动态化,以便无论 lastValue 的值增加多大,它都会运行。

4

6 回答 6

3

使用 a 可能更合适Map<Double, List<Double>>。将值Map作为 aList<Double>将允许您扩展列表,而不是具有固定大小的数组。

public static void main(String[] args) throws CloneNotSupportedException {
    Map<Double, List<Double>> myMap = create(1, 3);
}

public static Map<Double, List<Double>> create(double row, double column) {
    Map<Double, List<Double>> doubleMap = new HashMap<Double, List<Double>>();

    for (double x = 0; x < row; x++) {
        for (double y = 0; y < column; y++) {
            doubleMap.put(x, new ArrayList<Double>());
        }
    }
    return doubleMap;
}
于 2013-05-08T09:29:12.213 回答
3

尝试使用

Map<String, ArrayList> lastSecArray = new HashMap<>();
    ArrayList value = new ArrayList();
    value.add(0);
    value.add(1);
    value.add(2);
    lastSecArray.put("0", value);

所以你可以使用

lastSecArray.size()

或者

lastSecArray.put(...)

或数组中的数组

于 2013-05-08T09:35:08.853 回答
1

请改用ArrayList

您可以使用:

List<List<Double>> = new ArrayList<>();

ArrayList是动态可扩展的。您可以ArrayList为行和列创建。

于 2013-05-08T09:28:15.707 回答
1

我假设你来自 C 世界。在 Java 中,您有许多表示数组的对象。

我建议你检查这个链接:ArrayList。这是一个使用可调整大小数组的类。

我认为这是在 Java 中拥有动态二维数组的好方法。

由于 ArrayList 是一个模板类,您可以创建ArrayList<ArrayList<double>>,或者如果您想要“静态”行数,您可以创建ArrayList<double[2]>.

于 2013-05-08T09:35:26.483 回答
0

在 Java 中,数组是固定大小的,所以你说的是不可能的。

看看这个线程可能会对你有所帮助。

Java中的可变长度(动态)数组

于 2013-05-08T09:29:57.893 回答
0

如果您在运行时知道元素大小

int size=runtime decides;
double [][] lastSecArray = new double [2][size];
于 2013-05-08T09:30:55.790 回答