andbin ha scritto:
tagan ha scritto:
Anzi no, la doppia chiave dovrebbe essere questa HashMap<String (marca), HashMap<String (modello), List<Veicolo>>>
Scusa ma prima parlavi di "contatti" .... ora di "veicoli"? Mi sfugge ....
Comunque sì, quest'ultima parametrizzazione ha senso. Solo che: a fronte di una marca/modello, quanti veicoli ti aspetti? Dipende da cosa rappresenta la classe Veicolo. Solo il modello come concetto? O una automobile concreta di quel modello?
Per dire: se in Veicolo hai la targa, allora è certamente una automobile "reale", quindi una lista di veicoli ha senso per uno stesso nome di modello.
Era un esempio.....non mi veniva niente con "Contatti"
però diciamo che ad un concessionario serve un programma e vende sia auto nuove che usato.
Serve appunto ....molto banalmente......
una marca (prima chiave) es. Fiat
poi un modello (seconda chiave) es. Panda
poi una lista di modelli che sono veicoli concreti (omettendo classi astratte e bla bla bla).... avrò attributi come targa, km percorsi, allestimento, colore
quindi se vogliamo "vederlo" come struttura (chiavi String):
HashMap("Fiat" ,(HashMap("Panda") ,Lista [ veicolo1, veicolo2, veicolo3 ] ))
HashMap( ,(HashMap("Punto") ,Lista [ veicolo4, veicolo5 ] ))
HashMap("Renault",(HashMap("Clio") ,Lista [ veicolo6, veicolo7, veicolo8 ] ))
HashMap( ,(HashMap("Captur") ,Lista [ veicolo9 ] ))
giusto?
Se vogliamo dargli una parvenza grafica.
In questo modo se arriva una nuova Panda, dovrò solo estrarre la LIST e aggiornarla con un ADD, perché il metodo PUT per Fiat e Panda non farà altro che sovrascrivere per le stesse chiavi, la nuova Lista
Ma dovrebbe funzionare..... va pensato bene, almeno per quanto mi riguarda, la funzione che estrae la LIST, dovrà
- cercare la prima chiave nella prima HashMap,
- poi cercare la seconda chiave nei VALORI di quest'ultima, che non sono altro che la seconda HashMap annidata
- una volta trovata, estrarre la LIST,
- poi operarci sopra con una ADD
- poi fare una put della HashMap annidata per seconda chiave in modo da aggiornare la LIST nella struttura
- infine ultima put della prima chiave e avere tutto allineato.
Beh.....non è banale!
fare