是否可以在JAVA中的ArrayList <double [] []>中存储double [] []数组?</double [] []>

时间:2014-01-09 23:48:50

标签: java arrays arraylist double

我一直想着这个问题。我需要一个可以接受一些double[][]数组的类,然后存储这个数组以备将来使用。我能想到的唯一存储选项是在double[][] ArrayList<>()中存储double[][]

我确实如下实现:

public class AddToArray {
    public String[] parameterNames;
    public ArrayList<double[][]> parametersToChange;    

public AddToArray(String[] parameterNames){
    this.parameterNames = parameterNames;
}

public void addToArray(double[][] parametersToChange) throws InsufficientInputException     

    for(int i = 0; i < parametersToChange.length; i++){
        if(parametersToChange[i].length != this.parameterNames.length)
            throw new InsufficientInputException("DATA DIMENSION MISMATCH");
    }
    // This below gives nullpointexception.
    this.parametersToChange.add(parametersToChange);

}

我打电话给这个例子:

        double[][] parametersToChange = {{0.005,0.006},{0.007,0.008}};
    String[] par = {"SI1","SI2"};
    AddToArray abc = new AddToArray(par);
    abc.addToArray(parametersToChange);
    System.out.println(abc.parametersToChange.get(0)[0][0]); // this would (in my ideal world) print out 0.005

我收到此调用的空指针异常,我认为不可能制作'ArrayList'。我有什么其他选择,我真的无法想出这一个?

3 个答案:

答案 0 :(得分:7)

你初步确定了arraylist吗?

parametersToChange = new ArrayList<>();

答案 1 :(得分:0)

您忘记初始化parametersToChange

答案 2 :(得分:0)

由于在Java(类型擦除)中实现泛型的方式,数组和泛型不能很好地协同工作。

Joshua Bloch在Effective Java中对该主题进行了讨论,您可以找到here部分。