nel progetto al momento sto lavorando abbiamo avuto tre diversi tipi di prezzi a seconda dell'età dell'utente (adulto, bambino, ecc ...). Quindi abbiamo avuto sul DB una tabella simile a questa:
PRICES type Amount A 20 B 15 C .. D ..
All'inizio avevamo solo 4 diversi tipi di prezzi, quindi nel codice avevamo qualcosa di simile a questo:
Map<String, BigDecimal> prices = new HashMap<String, BigDecimal>();
Dove le chiavi erano il tipo di prezzo.
Recentemente, hanno aggiunto una nuova regola aziendale che aggiunge 3 sottotipi a ogni tipo di prezzo, quindi ora abbiamo qualcosa di simile a questo:
PRICES type subtype Amount A 1 20 A 2 15 A 3 .. B 1 .. B 2 .. ... .. ..
Quale delle seguenti due opzioni ritieni sia meglio e perché?
Mappe nidificate
Map<String, Map<String, BigDecimal>> prices;
dove le chiavi sono il tipo di prezzo e il sottotipo:
prices.get(type).get(subtype);
Tasti combinati
La stessa mappa dell'originale:
Map<String, BigDecimal> prices;
E concatena le chiavi per indicizzare i diversi prezzi:
prices.get(type+"_"+subtype);