Ich versuche einen schnellen Weg zu finden, eine Menge von Objekten zu speichern, die jeweils einen x- und y-Koordinatenwert haben, so dass ich schnell alle Objekte innerhalb eines bestimmten Objekts abrufen kann Rechteck oder Kreis. Für kleine Mengen von Objekten (~ 100) ist der naive Ansatz, sie einfach in einer Liste zu speichern und zu durchlaufen, relativ schnell. Für viel größere Gruppen ist dies jedoch erwartungsgemäß langsam. Ich habe versucht, sie in einem Paar treemaps auch, ein sortiert auf der x-Koordinate und einer sortiert auf der y-Koordinate, mit diesem Code zu speichern:Objekte zur Ortung nach x, y Koordinaten speichern
xSubset = objectsByX.subSet(minX, maxX);
ySubset = objectsByY.subSet(minY, maxY);
result.addAll(xSubset);
result.retainAll(ySubset);
Dies funktioniert auch, und ist schneller für größere Sätze von Objekten, aber ist immer noch langsamer als ich es möchte. Ein Teil des Problems besteht auch darin, dass diese Objekte sich bewegen und wieder in diesen Speicher eingefügt werden müssen, was bedeutet, dass sie aus den Bäumen/Listen entfernt und wieder hinzugefügt werden. Ich kann nicht anders, als zu denken, dass es bessere Lösungen geben muss. Ich implementiere dies in Java, wenn es einen Unterschied macht, obwohl ich erwarte, dass jede Lösung mehr in Form eines nützlichen Musters/Algorithmus vorliegt.
Hoppla, zu langsam ... –