Bästa svaret
Tänk på skillnaderna mellan en lista, en karta och en uppsättning.
En karta är en struktur som låter dig slå upp saker med en nyckel. När du utformar för sökningar inser du att det finns många nyckeljämförelser och sökningar måste vara snabba. Ett träd påskyndar nyckeljämförelseprocessen genom att organisera nycklarna inom grenar, detta minskar antalet nyckeljämförelser som måste göras.
I en uppsättning finns det inga dubbletter. Så varje gång du lägger till ett objekt måste du jämföra det med befintliga objekt för att se om det är en duplikat. Nu är du tillbaka till samma problem som kartan, så du använder ett träd för att organisera dina artiklar för att minska jämförelser.
En lista har bara ordning, därför kan en lista enkelt utformas så att den inte ” t kräver jämförelser för att få nästa (eller möjligen föregående) objekt i listordningen.
Så även om ett träd kan hjälpa dig att göra en bättre karta eller uppsättning, kan det inte hjälpa dig att skapa en bättre lista .
Om du pratar om en sorterad lista, där objekt infogas i listan i sorteringsordning, är du nu tillbaka till jämförelser för att sortera så att trädet kan hjälpa till att skapa en sorterad lista.
Svar
Tja, en lista är beställd samling – vilket innebär att du måste ha möjlighet att slumpmässigt komma åt ith-elementet. Om samlingen blandar elementen internt, kommer infogningsordningen inte att vara samma som elementens ordning i den interna datastrukturen. Så du kan inte lita på indexbaserad åtkomst längre. Därför tillhandahöll Sun inte en SortedList eller en TreeList-klass. Du kan uppnå samma sak med Collections.sort (..)
Apache commons-collection ger en TreeList-klass ( TreeList (Commons Collections 3.2.1 API) ) men det är inte en sorterad lista och kallas så eftersom den använder en trädatastruktur för att lagra elementen internt