如何创建动态二维数组[JAVA]

时间:2013-05-08 09:25:52

标签: java list multidimensional-array

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

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

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

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

6 个答案:

答案 0 :(得分:2)

使用Map<Double, List<Double>>可能更合适。将Map的值设为List<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;
}

答案 1 :(得分:2)

尝试使用

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(...)

或数组中的数组

答案 2 :(得分:1)

改为使用ArrayList

您可以使用:

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

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

答案 3 :(得分:1)

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

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

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

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

答案 4 :(得分:0)

Java数组中的

是固定大小的,所以你所说的是不可能的。看看这个帖子可能对你有帮助。

Variable length (Dynamic) Arrays in Java

答案 5 :(得分:0)

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

int size=runtime decides;
double [][] lastSecArray = new double [2][size];