如何在链接列表中获取数据引用/索引?
e.g。如果我有这个链表
java.util.List<Polygon> triangles = new LinkedList<Polygon>();
polygon triangle, selectedTriangle;
Point startDrag,endDrag,midPoint;
....
triangles.add( new Polygon(xs, ys,3));
e.g。如何将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; //
}
}
.....
}
答案 0 :(得分:5)
假设Polygon
适当地覆盖equals
,您可以使用:
int index = triangles.indexOf(desiredTriangle);
请注意,使用带有链表的索引效率相对较低,因为获取任何特定索引意味着将整个列表从头部转移到该索引。
LinkedList
没有提供API来查找第一个相等元素,但您可以使用indexOf
后跟get
(需要两次传递)或自己编写{{1像这样的方法:
findFirst
(如果需要,可以使用合适的空值检查。)
答案 1 :(得分:0)
根据您的意思,我建议使用get或indexOf方法。您可以在Java API中查看它们各自执行的操作:http://java.sun.com/javase/6/docs/api/java/util/List.html
基本上get获取一个数字并返回该索引处的对象。 IndexOf接受一个对象并返回它找到的第一个索引(如果找不到则返回-1。)