Beste antwoord
Denk na over de verschillen tussen een lijst, een kaart en een set.
Een kaart is een structuur waarmee u dingen kunt opzoeken met een sleutel. Wanneer u ontwerpt voor lookups, realiseert u zich dat er veel belangrijke vergelijkingen zijn en dat zoekopdrachten snel moeten zijn. Een Tree versnelt het sleutelvergelijkingsproces door de sleutels in branches te organiseren; dit vermindert het aantal belangrijke vergelijkingen dat moeten worden gemaakt.
In een set zijn er geen dubbele items. Dus elke keer dat u een item toevoegt, moet u het vergelijken met de bestaande items om te zien of het een duplicaat is. Nu ben je terug bij hetzelfde probleem als de kaart, dus je gebruikt een boomstructuur om je items te ordenen om vergelijkingen te verminderen.
Een lijst heeft gewoon een volgorde, dus een lijst kan gemakkelijk zo worden ontworpen dat het niet ” Er zijn vergelijkingen nodig om het volgende (of mogelijk vorige) item in de lijstvolgorde te krijgen.
Dus hoewel een boom je kan helpen een betere kaart of set te maken, kan het je niet echt helpen om een betere lijst te maken. .
Als je het hebt over een gesorteerde lijst, waar items in sorteervolgorde in de lijst worden ingevoegd, ben je nu terug bij vergelijkingen voor het sorteren, zodat de boom kan helpen bij het maken van een gesorteerde lijst.
Antwoord
Nou, een lijst is een geordende collectie – wat betekent dat u de mogelijkheid moet hebben om willekeurig toegang te krijgen tot het ith-element. Als de verzameling de elementen intern door elkaar schudt, zal de invoegvolgorde niet hetzelfde zijn als de volgorde van de elementen in de interne gegevensstructuur. U kunt dus niet meer vertrouwen op op index gebaseerde toegang. Daarom heeft Sun geen SortedList- of TreeList-klasse geleverd. U kunt hetzelfde bereiken met Collections.sort (..)
Apache commons-collections biedt wel een TreeList-klasse ( TreeList (Commons Collections 3.2.1 API) ) maar het is geen gesorteerde lijst en wordt zo genoemd omdat het een boomgegevensstructuur gebruikt om de elementen intern op te slaan