Posortowana Mapa

Posortowana Mapa
0

Witam. Otóż piszę prostą grę planszową i zastanawiam się nad reprezentacją pól. Czy dobrze jest to zrobić za pomocą mapy a dokladnie Map < Point, Pole > ? I teraz po kliknięcia odczytywać dane pole za pomocą wspolrzędnych ? Wydaje mi się, że tak tylko w pierwszym kroku muszę wypełnić wszystkie pola... Czy istnieje taka mapa która gwarantuje kolejność taką w jakiej wartosci i klucze zostaly dodane?

WK
WK
  • Rejestracja:około 11 lat
  • Ostatnio:prawie 10 lat
  • Postów:110
0

Jesli wielkosci wymiarow sa stale to uzylbym tablic

0

A możesz wyjaniśnić czemu byłoby to lepsze? Dostęp do mapy przez klucz jest chyba szybki + kod lepiej będzie wyglądał tzn bardziej obiektowo. Tylko to pierwsze odczytanie wszystkich pól w odpowiedniej kolejności...

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

1.Użycie tablic jest logiczniejsze.
2.I szybsze (nie ma narzutu na wywoływanie żadnej metody).
3.No i przede wszystkim nie stwarzasz sztucznego problemu w iterowaniu.


Qbisiek
  • Rejestracja:około 12 lat
  • Ostatnio:około 10 lat
  • Postów:160
0

Dostęp do wartości mapy poprzez klucz jest szybkie, ale nigdy nie szybsze niż dostęp do wartości tablicy przez indeks i mapa nigdy nie będzie działać szybciej niż tablica, za to może działać wolniej (i działa wolniej). Jeżeli więc znasz wielkość planszy to najlepiej użyć zwykłej tablicy - szczególnie, że rozwiąże to Twój problem sortowania.


edytowany 1x, ostatnio: Qbisiek
0

Hmm dzięki za odpowiedź, ale jednak tak nie mogę zrobić. Kod ma być jak najbardziej obiektowy i pętle ( przy takiej tablicy dwuwymiarowej ich będzie dużo) nie są mile widziane. Czy w takim razie można jakość uzyskać kolejność wartości w mapie? Może to być wolniejsze niż w tablicy. I tak użyję tego tylko jeden raz przy wyświetlaniu całej planszy. Potem będę uaktualniał tylko dane pole - mając klucz ( punkt(x,y) ) szybko dostane się do danego pola.

Patryk27
Dwie pętle to dużo? :| - mając klucz ( punkt(x,y) ) szybko dostane się do danego pola powątpiewałbym :v
WK
wojciech.kudla
"Kod ma być jak najbardziej obiektowy i pętle ( przy takiej tablicy dwuwymiarowej ich będzie dużo) nie są mile widziane". Proponuje w takim razie loop unrolling i reczny copy-paste 500 razy. Pozbedziesz sie tych wstretnych petli. A, i mapy tez nie mozesz uzyc, bo implementacja HashMap w javie oparta jest o tablice. Chyba jednak za malo obiektowe, co nie? Rece opadaja.
0

No niestety to nie są moje wymysły. Przy pętli for(int i = 0 ; i < 3 ; i ++ ) prowadzący zapytał :" a co jakby zmienił 3 na 5 ? Jak szybko znajdzie pan ten błąd ?" No nic, zostane na razie przy tej tablicy.

Patryk27
Przecież nikt normalny nie robi takich pętli na sztywno, dziwny prowadzący. A taki błąd bardzo szybciutko - istnieje szansa, że nawet kompilator by poinformował. Ale skoro taki wymóg, to cóż poradzić :P
WK
wojciech.kudla
Od tego sa stale i zmienne. Moze prowadzacy jeszcze do nich nie dotarl czytajac Thinking in Java.
0

LinkedHashMap zachowuje kolejnosc par tak jak byly dodane. Iteracja po mapie odbedzie sie w takiej samej kolejnosci w jakiej bylo dodawanie (pod wzgledem kluczy).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.