pangolino ha scritto:
Secondo voi qual è il miglior modo per tenere costantemente traccia dei posti disponibili, dei posti occupati (in modo da visualizzarli a video singolarmente) e del totale di liberi e occupati? metterli dentro un array[]? e fare una ricerca mirata?
[...] sto cercando di capire come ogni volta fare la ricerca di quel posto libero nella lista aggiornata per associarlo alla singola macchina
Partiamo dal presupposto che si può fare in svariati modi. Se usi una map, dovrai avere delle chiavi (Integer, presumo) e per cercare un posto libero devi "provare" tutte le chiavi possibili (es. da 0 a 19 o 1..20 se ci sono 20 posti) fino a trovare che una
non è nella map (=libero). Se usi un array, userai degli indici (int) e per cercare un posto libero devi "provare" a tutti gli indici finché trovi un elemento es. null (=libero). La ricerca di un posto libero è in entrambi i casi proprio una "ricerca" lineare.
Se non vuoi perdere tempo in questa ricerca, c'è un'altra strategia. OLTRE alla map
o array tieni un'altra collezione es. un LinkedList dove mantieni i posti "liberi". All'inizio il LinkedList contiene tutti i posti liberi (es. valori da 0 a 19). Quando devi trovare un posto, togli la chiave/indice dalla "testa" del LinkedList (operazione veloce/efficiente) e lo usi. Quando un posto si libera, rimetti la chiave/indice al fondo (o testa) del LinkedList. Quindi non c'è più una "ricerca" del posto che richiede una scansione.
E si possono fare varie altre varianti.
Quello che invece è molto importante è che tutta questa logica la incapsuli dentro una classe. Ovvero fare una classe es. Parcheggio in cui è "nascosta" questa logica in modo che dall'esterno non si debba/possa sapere se hai usato un array piuttosto che una map o altro. Insomma, ragionare bene in termini della OOP.