So entfernen Sie bestimmte Elemente auf der Liste
So entfernen Sie bestimmte Elemente auf der Liste?
...
java.util.List<Polygon> triangles = new LinkedList<Polygon>();
Point startDrag, endDrag, midPoint;
Polygon triangle;
....
int[] xs = { startDrag.x, endDrag.x, midPoint.x };
int[] ys = { startDrag.y, startDrag.y, midPoint.y };
triangles.add( new Polygon(xs, ys,3));
....
public void mouseClicked(MouseEvent e) {
...
startDrag = new Point(e.getX(), e.getY());
for (Polygon p:triangles){
if (p.contains(startDrag)) //Polygon has a 'contains(Point)' method
remove (p.contains(startDrag));
}
....
InformationsquelleAutor Jessy | 2009-09-28
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werden Sie nicht in der Lage, entfernen Sie das Objekt aus der
triangles
Liste, wenn Sie derzeit Durchlaufen ihn. Wenn Sie versuchen, so zu tun, die Sie auslösen werden, einConcurrentModificationException
. Stattdessen, was Sie tun sollten, ist eine Kopie der Liste und Durchlaufen, und wenn Sie bekommen ein hit, entfernen Sie das Element aus dem original:Entfernen von Objekt, wie das entfernen von einem bestimmten Dreieck von einem Dreieck list, List::remove(Objekt)
Für die oben genannten Zwecke, möchten Sie vielleicht die Verwendung Liste::listIterator(), obwohl. So etwas wie:
List
/Collection.iterator
sollte ausreichend sein.Dies ist eine böse, grub ich es - es ist der system-thread-aus die Maus Geklickt wird festgestellt, nicht als die Schöpfer der java.util.Thingamabob ( eine neue Daten-Struktur, die freigegeben werden morgen )
Trotz Dokumentation, in übereinstimmung mit gemeinsamen Sinn, was die Sache nicht wirklich ist, sehen, dass der thread von MouseClicked ist nicht der Thread, der erstellt
java.util.List<Polygon> triangles
etwas auf die Reihenfolge der Thread-ID oder wie Namensgebung des threads gehen und dann wirft aus den tiefen der JVM eine Ausnahme ( setzt die exception flag auf der C-Seite ) gibt dann verlassen Sie mit keine funktionierende Ausnahme.getMessage() .....
Können Sie implementieren, kopieren Sie die Semantik und die original-version funktioniert, hat einige bit-verdrehen auf Ihr Gehirn, aber es funktioniert.