Belangrijkste verschil - lijst versus set
De meeste programmeertalen gebruiken arrays om een set gegevens van hetzelfde type op te slaan. Een belangrijk nadeel van arrays is dat, zodra de arraygrootte is gedeclareerd, deze niet kan worden gewijzigd. Als de programmeur waarden wil opslaan die de arraygrootte overschrijden, moet hij een nieuwe array maken en de bestaande elementen naar de nieuwe array kopiëren. In deze situaties kunnen collecties worden gebruikt. Het is mogelijk om elementen toe te voegen, elementen te verwijderen en vele andere bewerkingen met behulp van collecties. Er zijn verschillende soorten collecties beschikbaar in programmeertalen zoals Java. List en Set zijn interfaces van de hiërarchie van collecties. De basisinterface voor andere interfaces is Collectie. Het belangrijkste verschil tussen List en Set is dat List het meerdere keren opslaan van hetzelfde element ondersteunt, terwijl Set het meerdere keren opslaan van hetzelfde element niet ondersteunt. Daaromeen set staat duplicatie niet toe.
INHOUD
1. Overzicht en belangrijkste verschil
2. Wat is lijst
3. Wat is set
4. Overeenkomsten tussen lijst en set
5. Vergelijking zij aan zij - Lijst versus reeks in tabelvorm
6. Samenvatting
Wat is een lijst?
De lijst is een interface die de collectie-interface uitbreidt. Er zijn een aantal methoden in de collectie-interface. De add-methode helpt om een element toe te voegen. De 'verwijdermethode' is om een element te verwijderen. Er is een 'addAll-methode' om meerdere elementen toe te voegen terwijl de 'removeAll-methode' om de elementen uit de verzameling te verwijderen. De methode bevat helpt om te bepalen of een specifiek object in de lijst aanwezig is of niet. De 'containsAll' is om te achterhalen of een set objecten aanwezig is in de collectie. De iteratormethode wordt gebruikt om door de items van de lijst te lopen. Aangezien Lijst de verzameling uitbreidt, behoren alle methoden van verzameling tot de lijst. Naast deze methoden heeft de lijst methoden zoals get en set. De programmeur kan een waarde op een specifieke index krijgen met de methode get. De programmeur kan een waarde instellen op een specifieke index met behulp van de set-methode. De 'indexOf' wordt gebruikt om de index van een element te vinden.
In een lijst kunnen de bewerkingen worden uitgevoerd op basis van de positie. De programmeur kan het data-element leveren dat aan de index moet worden toegevoegd. Het wordt dus toegevoegd aan de specifieke index. Als de programmeur geen index geeft, wordt het element aan het einde van de lijst toegevoegd. Het behoudt ook de ingevoegde volgorde. Als element 1 wordt toegevoegd en vervolgens element2 wordt toegevoegd, komt element1 voor element2.
Figuur 01: lijst en set
ArrayList, LinkedList, Vector zijn enkele klassen die List implementeren. In een ArrayList is toegang tot een element snel, maar het invoegen en verwijderen is lager. ArrayList is niet thread-safe. Toegang tot dezelfde ArrayList vanuit meerdere threads geeft mogelijk niet hetzelfde resultaat. In een LinkedList zijn de elementen gekoppeld aan zowel backward als forward. Het invoegen en verwijderen van elementen met behulp van een LinkedList gaat sneller dan de ArrayList. De LinkedList implementeert List en Queue Both. Vector lijkt op ArrayList, maar is veilig omdat alle methoden zijn gesynchroniseerd.
Wat is er ingesteld?
Set is een interface die de collectie-interface uitbreidt. Aangezien de Set-interface de verzameling uitbreidt, behoren alle verzamelingsmethoden ook tot de set. Een set ondersteunt geen duplicatiewaarden. Daarom kan de programmeur hetzelfde element niet twee keer opslaan. Het onderhoudt een unieke set elementen. De SortedSet-interface breidt de Set-interface uit. SortedSet houdt de elementen in gesorteerde volgorde. De NavigableSet-interface breidt SortedSet uit. De NavigableSet biedt navigatiemethoden zoals onder, vloer, plafond etc.
HashSet, LinkedHashSet en TreeSet zijn enkele klassen die de Set-interface implementeren. De HashSet implementeert de Set-interface. Het handhaaft de ingevoegde volgorde niet. Als de waarden worden ingevoegd als a, x, b, kan deze worden opgeslagen als, x, a, b. De LinkedSet handhaaft de ingevoegde volgorde. Als de elementen worden ingevoegd in de a, x, b-volgorde, is de opslagvolgorde a, x, b. De TreeSet implementeert Set en NavigableSet. Het handhaaft niet de volgorde van invoeging, maar slaat de elementen op in de gesorteerde volgorde. Als de ingevoegde volgorde a, c, b is, worden de elementen opgeslagen als a, b, c. Alle HashSet, LinkedHashSet en TreeSet hebben geen dubbele elementen.
Wat zijn de overeenkomsten tussen lijst en set?
- Zowel List- als Set-interfaces breiden de Collection-interface uit.
- Zowel Lijst als Set ondersteunen bewerkingen zoals het toevoegen en verwijderen van elementen.
Wat is het verschil tussen lijst en set?
Lijst versus set |
|
Lijstinterface is de subinterface van Collection die methoden bevat om bewerkingen uit te voeren zoals invoegen en verwijderen op basis van de index. | Set Interface is een subinterface van Collection die methoden bevat om bewerkingen uit te voeren zoals elementen invoegen en verwijderen met behoud van de unieke elementen. |
Klassen | |
ArrayList, Vector en LinkedList zijn klassen die de List-interface implementeren. | HashSet, LinkedHashSet en TreeSet zijn klassen die de Set-interface implementeren. |
Element duplicatie | |
Lijst ondersteunt duplicatie van elementen. | Set ondersteunt geen duplicatie van elementen. Elementen zijn uniek. |
Samenvatting - Lijst versus set
Collecties worden gebruikt om elementen dynamisch op te slaan. Programmeertalen zoals Java bieden de collectie-interface. List en Set zijn twee interfaces die tot de Collection-interface behoren. Beide interfaces breiden Collection uit. In dit artikel is het verschil tussen lijst en set besproken. Het belangrijkste verschil tussen List en Set is dat List het meerdere keren opslaan van hetzelfde element ondersteunt, terwijl Set het meerdere keren opslaan van hetzelfde element niet ondersteunt. Set behoudt altijd unieke elementen.