2009-09-29 77 views
0

如何獲取鏈接列表中的數據引用/索引?列表鏈接列表參考

例如如果我有這個鏈表

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

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

triangles.add(new Polygon(xs, ys,3));  

例如,如何將多邊形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; // 
    } 
    } 
..... 

} 

回答

5

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

(帶如果你需要,可以進行空檢查。)

0

根據你的意思,我建議使用get或indexOf方法。你可以在Java API中看到他們每個人都做了什麼:http://java.sun.com/javase/6/docs/api/java/util/List.html

基本上得到一個數字並返回該索引處的對象。 IndexOf接受一個對象並返回找到的第一個索引(如果找不到則返回-1)