![](/img/trans.png)
[英]Java Collections ArrayList, LinkedList cast Exception
[英]Processing/Java ArrayList & LinkedList exception
我试图在我的一款游戏中实现寻路系统,所以我遇到了以下问题。
我在这里得到了一个不错的ArrayList:
ArrayList<PVector> path = new ArrayList<>();
现在为空,稍后在Process中填充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,6.0,0}
获得5.0
?
所以您有一个PVector
的ArrayList
,对吗? 这意味着,当您从ArrayList
get
时,您将获得一个PVector
。 我不知道PVector,但有(希望)的方法PVector
拿到第一INT( x()
或东西)。
对于此类问题, 参考文献是您最好的朋友。
但是请记住path.get(0)
返回一个PVector
。 然后,您可以使用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;
声明变量时,请始终对将要存储在其中的最特殊类型的泛型类型进行参数化:
// Declaration:
List<PVector> path = new ArrayList<PVector>();
// Storing:
path.add(new PVector(...));
path.add(new PVector(...));
...
// Reading:
PVector pVector=path.get(n);
pVector.get(...)
这样,从列表中读取项目时,您将获得与存储的对象完全相同的类型 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.