Jes*_*ssy 0 java linked-list list
如何在链接列表中获取数据引用/索引?
例如,如果我有这个链表
java.util.List<Polygon> triangles = new LinkedList<Polygon>();
polygon triangle, selectedTriangle;
Point startDrag,endDrag,midPoint;
....
triangles.add( new Polygon(xs, ys,3));
Run Code Online (Sandbox Code Playgroud)
例如,如何将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; //
}
}
.....
}
Run Code Online (Sandbox Code Playgroud)
假设适当地Polygon覆盖equals,您可以使用:
int index = triangles.indexOf(desiredTriangle);
Run Code Online (Sandbox Code Playgroud)
请注意,使用带有链表的索引效率相对较低,因为获取任何特定索引意味着将整个列表从头部转移到该索引.
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;
}
Run Code Online (Sandbox Code Playgroud)
(如果需要,可以使用合适的空值检查.)
| 归档时间: |
|
| 查看次数: |
1325 次 |
| 最近记录: |