列出链接列表参考

时间:2009-09-29 05:27:01

标签: java list linked-list

如何在链接列表中获取数据引用/索引?

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; //
    }
  }
.....

}

2 个答案:

答案 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。)