Processing / Java ArrayList& LinkedList异常

时间:2016-01-17 13:32:27

标签: java arraylist vector processing

我正在尝试将pathfind系统应用到我的一个游戏中, 所以我遇到了以下问题。

我来到这里一个很好的ArrayList:

ArrayList<PVector> path = new ArrayList<>();

现在它是空的,稍后在过程中它填充了PVector:

{5.0,6.0,0},{5.0,7.0,0},{5.0,8.0,0},{5.0,9.0,0}

多数民众赞成不是吗?但我无法使用它,因为我只需要{5.0,6.0,0} ....

中的5.0

我用path.get(0)尝试了...我只得到{5.0,6.0,0} ...所以我在这里找到了新的东西:

path.get(0)[0];也没有用...因为表达式类型需要是一个数组但是它被解析为一个对象

那么如何从索引中获取单个条目? :/ 如何从5.0中获取{5.0,6.0,0}

3 个答案:

答案 0 :(得分:1)

所以你有ArrayListPVector,对吧?这意味着,当您get ArrayList时,您会收到PVector。我不知道PVector,但是(希望)PVector中有一个方法来获取第一个int(x()或者其他东西)。

答案 1 :(得分:1)

对于这类问题,the reference是您最好的朋友。

但请记住,path.get(0)会返回PVector。然后,您可以使用the PVector API来获取其位置。像这样:

ArrayList<PVector> path = new ArrayList<PVector>();
//add PVectors to path
PVector p = path.get(0);
float x = p.x;

请注意,我使用<PVector>泛型,以便ArrayList知道它所拥有的对象类型。 p变量不是必需的;我只是用它来表明path.get()返回PVector。你也可以在一行中完成:

ArrayList<PVector> path = new ArrayList<PVector>();
//add PVectors to path
float x = path.get(0).x;

答案 2 :(得分:0)

声明变量时,请始终使用您将存储在其中的最具体类型的泛型类型进行参数化:

// Declaration:
List<PVector> path = new ArrayList<PVector>();

// Storing:
path.add(new PVector(...));
path.add(new PVector(...));
...

// Reading:
PVector pVector=path.get(n);
pVector.get(...)

通过这种方式,当您从列表中读取项目时,您将获得与您存储的相同类型的对象