2009-09-29 3 views
0

Как получить ссылку на данные/индекс в Связанном списке?Список ссылок Список ссылок

например. если у меня есть этот связанный список

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 как один и тот же с существующим треугольником в списке связанных массивов?

EDITED:

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, если он не найден.)

 Смежные вопросы

  • Нет связанных вопросов^_^