Le liste rappresentano un ordinamento sequenziale di elementi. Le mappe sono utilizzate per rappresentare una raccolta di coppie chiave/valore.
Mentre è possibile utilizzare una mappa come elenco, ci sono alcuni aspetti negativi di farlo.
Ordine di manutenzione: - Viene ordinato un elenco per definizione. Aggiungete elementi e quindi potrete ripetere l'iterazione attraverso l'elenco nell'ordine in cui sono stati inseriti gli articoli. Quando aggiungi elementi ad una HashMap, non ti è garantito di recuperare gli oggetti nello stesso ordine in cui li hai inseriti. Ci sono sottoclassi di HashMap come LinkedHashMap che manterrà l'ordine, ma in generale l'ordine non è garantito con una mappa.
chiave/valore semantica: - Lo scopo di una mappa è quello di memorizzare gli elementi in base a una chiave che può essere utilizzato per recuperare l'oggetto in un momento successivo. Funzionalità simili possono essere raggiunte solo con un elenco nel caso limitato in cui la chiave è la posizione nell'elenco.
Leggibilità del codice Considerare i seguenti esempi.
// Adding to a List
list.add(myObject); // adds to the end of the list
map.put(myKey, myObject); // sure, you can do this, but what is myKey?
map.put("1", myObject); // you could use the position as a key but why?
// Iterating through the items
for (Object o : myList) // nice and easy
for (Object o : myMap.values()) // more code and the order is not guaranteed
funzionalità Collezione Alcune funzioni grande utilità sono disponibili per le liste tramite la classe Collezioni. Per esempio ...
// Randomize the list
Collections.shuffle(myList);
// Sort the list
Collections.sort(myList, myComparator);
Spero che questo aiuti,
'' Lists' e Maps' sono due * completamente * strutture di dati diversi, con diverse operazioni e invarianti. Puoi spiegare il contesto/i requisiti a cui stai pensando dove entrambe sarebbero soluzioni accettabili? –
A quanto pare non hai mai avuto bisogno di tenere un set di cose * in un particolare ordine * ... –
Downvote, perché? Penso che questa sia una domanda corretta. Mostra la mancanza di knowlegde, ma su SO domanda non dovrebbe essere downvoted per mostrare la mancanza di conoscenza. In realtà una domanda è sempre il risultato della mancanza di conoscenza. –