我正在尝试在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中获取单个值?
感谢您的帮助!
答案 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]