处理语言:从ArrayList()获取内部数组值

时间:2011-10-10 16:02:21

标签: java arrays multidimensional-array arraylist processing

我正在尝试在Processing中使用ArrayList()方法。

我有这个:

    ArrayList trackPoints = new ArrayList();

        //inside a loop
        int[] singlePoint = new int[3];

        singlePoint[0] = 5239;
        singlePoint[1] = 42314;
        singlePoint[2] = 1343;
        //inside a loop

    trackPoints.add(singlePoint);

所以基本上我想在我的ArrayList中添加一个带有三个值的数组“singlePoint”。

这似乎工作正常,因为现在我可以使用println(trackPoints.get(5));而且我得到了这个:

[0] = 5239;
[1] = 42314;
[2] = 1343;

但是,如何获得此数组的单个值?

println(trackPoints.get(5)[0]);不起作用。

我收到以下错误: “表达式的类型必须是数组类型,但它已解析为Object”

知道我做错了什么吗?如何从这个包含多个数组的arrayList中获取单个值?

感谢您的帮助!

2 个答案:

答案 0 :(得分:6)

您的ArrayList应该输入:

List<int[]> list = new ArrayList<int[]>();

如果不是,那么你使用的是原始列表,它可以包含任何内容。因此,它的get方法返回Object(这是所有Java对象的根类),并且必须使用强制转换:

int[] point = (int[]) trackPoints.get(5);
println(point[0]);

您应该阅读generics,并阅读the api doc of ArrayList

答案 1 :(得分:0)

ArrayList类上的get()方法返回一个Object,除非您将其与泛型一起使用。所以基本上当你说trackPoints.get(5)时,它返回的是一个对象。

与...相同,

Object obj = list.get(5);

所以你不能打电话给obj[0]

要做到这一点,你需要先输入case,如下所示:

( (int[]) trackPoints.get(5) )[0]