将数组存储在arraylist java中

时间:2016-04-11 17:12:23

标签: java arrays

我一直在尝试使用类似的方法将数组存储在数组列表中:

static ArrayList<double []> Shapes;
public static void Test(){
    double [] Test = new double [2];
    Test[0] = 1;
    Test[1] = 2;
    Shapes.add(Test);
}

我不确定这是否是你可以做的事情,但如果有人知道如何解决这个问题,我将不胜感激。

3 个答案:

答案 0 :(得分:2)

基本上,这不会起作用,因为你需要在某些时候调用= new ArrayList<double[]>();(或者在某些java版本中没有double[])。

如果你想存储关于不同形状的信息,你应该考虑为它们创建一个类,然后存储该类的实例。

答案 1 :(得分:0)

这是我猜的最简单的方法:

new ArrayList<Double>(Arrays.asList(Test))

答案 2 :(得分:0)

您的代码在Java语法中看起来几乎是正确的,尽管需要样式更改,因为Java约定是使用变量和方法的小写首字母。其他海报已经指出了缺少'new ArrayList'来创建数组。

问题在于,从面向对象的设计角度来看,使用double []来保存关于不同形状的信息并不是一个好的设计。我想你想要的是和ShapeInfo的ArrayList而不是double []的ArrayList。 ShapeInfo可以是可以由各种类实现的接口。这样的事情将允许您为每个形状提供不同的信息参数,并为可在循环中使用的所有形状提供通用方法(getSummary)。

import java.util.ArrayList;
import java.util.List;

public class Shapes {
    private static List<ShapeInfo> shapes;

    public static void main(String[] args) {
        shapes = new ArrayList<>();
        ShapeInfo info = new CircleInfo(1, 2, 3);
        shapes.add(info);
        // Check what's there
        for (ShapeInfo shape : shapes) {
            System.out.println(shape.getSummary());
        }
    }
}

interface ShapeInfo {
    String getSummary();
}

class CircleInfo implements ShapeInfo {
    private double centreX, centreY, radius;

    public CircleInfo(double centreX, double centreY, double radius) {
        this.centreX = centreX;
        this.centreY = centreY;
        this.radius = radius;
    }

    @Override
    public String getSummary() {
        return "Centre is at (" + centreX + "," + centreY + ") and radius is " + radius;
    }
}