Java 链表参考

Java 链表参考,java,list,linked-list,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)); java.util.List triangles

如何获取链表中的数据引用/索引

e、 g.如果我有这个链表

java.util.List<Polygon> triangles = new LinkedList<Polygon>();

polygon triangle, selectedTriangle;
Point startDrag,endDrag,midPoint;
....

triangles.add( new Polygon(xs, ys,3));    
java.util.List triangles=new LinkedList();
多边形三角形,选择三角形;
点起点、终点、中点;
....
添加(新多边形(xs,ys,3));
e、 g.如何将多边形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; //
    }
  }
.....

}
java.util.List triangles=new LinkedList();
多边形三角形,选择三角形;
....
添加(新多边形(xs,ys,3));
.....
公共无效鼠标按下(MouseEvent e){
....
startDrag=新点(e.getX(),e.getY());
endDrag=startDrag;
对于(多边形p:三角形){
如果(p.contains(startDrag)){//三角形内部
//我不知道如何将所选三角形设置为与现有三角形相同
selectedTriangle=三角形。indexOf(p.contains(startDrag));
中断//
}
}
.....
}

假设
多边形
覆盖
等于
适当,您可以使用:

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

publicstatictfindfirst(Iterable假设
Polygon
适当地覆盖
equals
,您可以使用:

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

publicstatict findFirst(Iterable根据您的确切意思,我建议使用get或indexOf方法。您可以在Java API中看到它们各自的作用:


基本上get接受一个数字并返回该索引处的对象。IndexOf接受一个对象并返回找到它的第一个索引(如果找不到,则返回-1)。

根据您的确切意思,我建议使用get或IndexOf方法。您可以在Java API中看到它们各自的作用:

基本上get接受一个数字并返回该索引处的对象。IndexOf接受一个对象并返回找到它的第一个索引(如果找不到,则返回-1)