Migliore risposta
Pensa alle differenze tra una lista, una mappa e un insieme.
Una mappa è una struttura che ti permette di cercare cose usando una chiave. Quando riprogetti le ricerche, ti rendi conto che ci sono molti confronti chiave e le ricerche devono essere veloci. Un albero accelera il processo di confronto delle chiavi organizzando le chiavi allinterno dei rami; questo riduce il numero di confronti delle chiavi che deve essere creato.
In un Set non ci sono elementi duplicati. Quindi ogni volta che aggiungi un oggetto, devi confrontarlo con gli elementi esistenti per vedere se è un duplicato. Ora sei tornato allo stesso problema della mappa, quindi usi un albero per organizzare i tuoi elementi per ridurre i confronti.
Una lista ha solo un ordine, quindi una lista può essere facilmente progettata in modo che non lo faccia ” non richiede confronti per ottenere lelemento successivo (o forse precedente) nellordine Elenco.
Quindi, sebbene un albero possa aiutarti a creare una mappa o un insieme migliore, non può davvero aiutarti a creare un elenco migliore .
Se stai parlando di un elenco ordinato , in cui gli elementi sono inseriti nellelenco in ordine di ordinamento, ora sei tornato ai confronti per lordinamento in modo che lalbero possa aiutare a creare un elenco ordinato.
Risposta
Beh, un elenco è un elenco ordinato collection – il che significa che devi avere la possibilità di accedere in modo casuale allelemento i-esimo. Se la raccolta mescola internamente gli elementi, lordine di inserimento non sarà lo stesso dellordine degli elementi nella struttura dati interna. Quindi non puoi più fare affidamento sullaccesso basato sullindice. Quindi Sun non ha fornito una classe SortedList o TreeList. Puoi ottenere lo stesso risultato utilizzando Collections.sort (..)
Apache commons-collections fornisce una classe TreeList ( TreeList (Commons Collections 3.2.1 API) ) ma non è un elenco ordinato e viene chiamato così perché utilizza una struttura dati ad albero per memorizzare gli elementi internamente