繁体   English   中英

列表链接列表参考

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM