Tôi đang cố gắng xác định một cách nhanh chóng để lưu trữ một bộ đối tượng, mỗi đối tượng có giá trị tọa độ x và y, sao cho tôi có thể nhanh chóng truy xuất tất cả các đối tượng trong một hình chữ nhật hoặc hình tròn. Đối với các bộ đối tượng nhỏ (~ 100) cách tiếp cận ngây thơ của việc lưu trữ chúng đơn giản trong một danh sách, và lặp lại thông qua nó, tương đối nhanh. Tuy nhiên, đối với các nhóm lớn hơn nhiều, đó là dự kiến chậm. Tôi đã thử lưu trữ chúng trong một cặp Bản đồ cây là tốt, một sắp xếp trên tọa độ x, và một sắp xếp trên tọa độ y, sử dụng mã này:Lưu trữ các đối tượng để định vị theo toạ độ x, y
xSubset = objectsByX.subSet(minX, maxX);
ySubset = objectsByY.subSet(minY, maxY);
result.addAll(xSubset);
result.retainAll(ySubset);
này cũng làm việc, và là nhanh hơn cho lớn hơn bộ đối tượng, nhưng vẫn chậm hơn tôi muốn. Một phần của vấn đề cũng là các đối tượng này di chuyển xung quanh, và cần phải được đưa trở lại vào bộ nhớ này, có nghĩa là loại bỏ chúng khỏi và thêm chúng vào cây/danh sách. Tôi không thể không nghĩ rằng phải có giải pháp tốt hơn trên mạng. Tôi đang thực hiện điều này trong Java, nếu nó làm cho bất kỳ sự khác biệt, mặc dù tôi hy vọng bất kỳ giải pháp sẽ được nhiều hơn trong các hình thức của một mô hình/thuật toán hữu ích.
Rất tiếc, quá chậm ... –