Vi har TreeSet, TreeMap, men ikke TreeList i Java-samlingen. Hvorfor så?


Bedste svar

Tænk på forskellene mellem en liste, et kort og et sæt.

Et kort er en struktur, der giver dig mulighed for at slå ting op ved hjælp af en nøgle. Når du designer til opslag, indser du, at der er mange nøglesammenligninger, og opslag skal være hurtige. Et træ fremskynder nøglesammenligningsprocessen ved at organisere nøglerne inden for grene. Dette reducerer antallet af nøglesammenligninger, som skal laves.

I et sæt er der ingen duplikatemner. Så hver gang du tilføjer et emne, skal du sammenligne det med de eksisterende emner for at se, om det er en duplikat. Nu er du tilbage til det samme problem som kortet, så du bruger et træ til at organisere dine emner for at reducere sammenligninger.

En liste har bare ordre, og derfor kan en liste let designes, så den ikke ” t kræver sammenligninger for at få det næste (eller muligvis forrige) element i listeordren.

Så mens et træ kan hjælpe dig med at oprette et bedre kort eller et sæt, kan det ikke virkelig hjælpe dig med at oprette en bedre liste .

Hvis du taler om en sorteret liste, hvor varer indsættes i listen i sorteringsrækkefølge, er du nu tilbage til sammenligninger til sortering, så træet kan hjælpe med at oprette en sorteret liste.

Svar

Nå er en liste bestilt samling – hvilket betyder, at du skal have mulighed for tilfældigt at få adgang til ith-elementet. Hvis samlingen internt blander elementerne, er indsættelsesrækkefølgen ikke den samme som rækkefølgen af ​​elementerne i den interne datastruktur. Så du kan ikke stole på indeksbaseret adgang længere. Derfor leverede Sun ikke en SortedList eller en TreeList-klasse. Du kan opnå det samme ved hjælp af Collections.sort (..)

Apache commons-collection giver en TreeList-klasse ( TreeList (Commons Collections 3.2.1 API) ), men det er ikke en sorteret liste og kaldes det, fordi det bruger en treddatastruktur til at gemme elementerne internt

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *