[英]List Linked List reference
如何在链接列表中获取数据参考/索引?
例如,如果我有此链表
java.util.List<Polygon> triangles = new LinkedList<Polygon>();
polygon triangle, selectedTriangle;
Point startDrag,endDrag,midPoint;
....
triangles.add( new Polygon(xs, ys,3));
例如,如何将Polygon selectedTriangle设置为与链接数组列表中的现有三角形之一相同?
编辑:
java.util.List<Polygon> triangles = new LinkedList<Polygon>();
polygon triangle, selectedtriangle;
....
triangles.add( new Polygon(xs, ys,3));
.....
public void mousePressed(MouseEvent e) {
....
startDrag = new Point(e.getX(), e.getY());
endDrag = startDrag;
for (Polygon p : triangles) {
if (p.contains(startDrag)) {//inside triangle
//I dont know how to set the selectedTriangle as the same with existing triangle
selectedTriangle = triangles.indexOf(p.contains(startDrag));
break; //
}
}
.....
}
假设Polygon
覆盖值equals
,则可以使用use:
int index = triangles.indexOf(desiredTriangle);
请注意,将索引与链表一起使用相对效率较低,因为到达任何特定索引都意味着将整个列表从头移到该索引。
LinkedList
不提供用于查找第一个相等元素的API,但是您可以使用indexOf
后跟get
(需要两次通过)或编写自己的findFirst
方法,如下所示:
public static <T> T findFirst(Iterable<? extends T> collection, T value)
{
for (T t : collection)
{
if (t.equals(value))
{
return t;
}
}
return null;
}
(如果需要,请进行适当的空检查。)
根据您的意思,我建议使用get或indexOf方法。 您可以在Java API中查看它们各自的作用: http : //java.sun.com/javase/6/docs/api/java/util/List.html
基本上,get接受一个数字并返回该索引处的对象。 IndexOf接收一个对象并返回在其找到的第一个索引(如果未找到,则返回-1)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.