Mam obiekt kursu wyścigowego, który jest ArrayList, który przyjmuje obiekty Horse. Wybrałem ArrayList, ponieważ jest łatwy w implementacji. Jednak wadą korzystania z ArrayList jest to, że nie mogę łatwo śledzić pozycji każdego konia bez przechodzenia kosztownych iteracji przez kolekcję. Na przykład, jeśli chcę znaleźć 2 konie, które znajdują się w odległości X od siebie, musiałbym iterować przez n^2
razy.Co to jest dobry zbiór danych do reprezentowania wyścigów konnych?
Czy istnieje lepsza strategia, aby to zrobić?
EDYCJA: Wiele próśb o szczegóły dotyczące mojego modelu wyścigowego, więc opiszę tutaj.
Model jest aktualizowany w każdej iteracji. Dlatego każdy koń ma swoją własną prędkość, przyspieszenie, przebytą odległość itd., A każda iteracja poprzez kolekcję aktualizuje te wartości. Istnieje wymóg, aby koń znajdujący się w pobliżu innego pojazdu zwolnił, co planuję zrobić, porównując wartości "przebytej odległości".
Możesz znaleźć takie pary koni, sortując ich pozycje i iterując, czyli 'O (n log n)'. –
być specyficzne: 1. Czy trzeba kwerendy i zmienić wartości losowo? lub 2. Czy (wielokrotnie) {aktualizuje wartości, a następnie wykonuje zapytania}? case 1. -> tree with remove and re-insert, case 2. -> array: repeat {zaktualizuj wartości, sortuj, wykonaj kwerendy} – BeyelerStudios
jest również trzeci przypadek: czy wartości (tj. pozycje wyścigu) mogą być losowe? czy mogą poruszać się tylko w górę iw dół? w tym trzecim przypadku potrzebujesz listy skanowania (która jest posortowaną tablicą), a przesuwanie w górę lub w dół jest równe zamianie pozycji w tablicy. – BeyelerStudios