列出链接列表参考

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)

Jon*_*eet 5

假设适当地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)

(如果需要,可以使用合适的空值检查.)