De fleste programmeringssprog bruger arrays til at gemme et sæt data af samme type. En væsentlig ulempe ved arrays er, at når arraystørrelsen først er erklæret, kan den ikke ændres. Hvis programmereren ønsker at gemme en værdi, der overstiger arraystørrelsen, skal han oprette en ny matrix og kopiere de eksisterende elementer til den nye array. I disse situationer kan samlinger bruges. Det er muligt at tilføje elementer, slette elementer og mange andre operationer med understøttelse af samlinger. Der er forskellige typer samlinger tilgængelige på programmeringssprog såsom Java. Liste og sæt er grænseflader i samlingens hierarki. Basisgrænsefladen for andre grænseflader er Collection. Det vigtigste forskel mellem Liste og Sæt er det Liste understøtter lagring af det samme element flere gange, mens Set ikke understøtter lagring af det samme element flere gange. Derfor tillader et sæt ikke duplikering.
1. Oversigt og nøgleforskel
2. Hvad er liste
3. Hvad er indstillet
4. Ligheder mellem liste og sæt
5. Sammenligning side ved side - Liste vs sæt i tabelform
6. Resume
Listen er en grænseflade, der udvider Collection-grænsefladen. Der er en række metoder i Collection interface. Tilføjelsesmetoden hjælper med at tilføje et element. 'Fjern metoden' er at fjerne et element. Der er 'addAll-metode' til at tilføje flere elementer, mens 'removeAll-metoden' for at fjerne elementerne fra samlingen. Metoden indeholder hjælper med at finde ud af, om et specifikt objekt er til stede i listen eller ej. 'Indeholder alt' er for at finde ud af, om et sæt objekter er til stede i samlingen. Iterator-metoden bruges til at gennemgå elementerne på listen. Efterhånden som listen udvider samlingen, hører alle indsamlingsmetoder til listen. Bortset fra disse metoder har listen metoder såsom get and set. Programmereren kan få en værdi ved et specifikt indeks ved hjælp af get-metoden. Programmereren kan indstille en værdi til et specifikt indeks ved hjælp af indstillingsmetoden. 'IndexOf' bruges til at finde indekset for et element.
På en liste kan handlingerne udføres i henhold til positionen. Programmereren kan levere det dataelement, der skal føjes til indekset. Så det tilføjes til det specifikke indeks. Hvis programmereren ikke giver et indeks, tilføjes elementet i slutningen af listen. Det opretholder også den indsatte rækkefølge. Hvis element 1 tilføjes og derefter element2 tilføjes, vil element1 være før element2.
Figur 01: Liste og sæt
ArrayList, LinkedList, Vector er nogle klasser, der implementerer Liste. I en ArrayList er det hurtigt at få adgang til et element, men indsættelse og sletning er lavere. ArrayList er ikke tråd-sikker. Adgang til den samme ArrayList fra flere tråde giver muligvis ikke det samme resultat. I en LinkedList er elementerne knyttet til både bagud og fremad. Indsættelse og sletning af elementer ved hjælp af en LinkedList er hurtigere end ArrayList. LinkedList implementerer liste og begge køer. Vektor svarer til ArrayList, men den er slidbane-sikker, fordi alle metoder er synkroniseret.
Sæt er en grænseflade, der udvider Collection-grænsefladen. Idet sætgrænsefladen udvider samlingen, hører alle indsamlingsmetoder også til sæt. Et sæt understøtter ikke duplikationsværdier. Derfor kan programmereren ikke gemme det samme element to gange. Det opretholder et unikt sæt elementer. Grænsefladen SortedSet udvider sætgrænsefladen. Sorteret sæt opretholder elementerne i sorteret rækkefølge. NavigableSet-grænsefladen udvider SortedSet. NavigableSet tilvejebringer navigationsmetoder såsom under, gulv, loft osv.
HashSet, LinkedHashSet og TreeSet er nogle klasser, der implementerer Set-grænsefladen. Det HashSet implementerer Set interface. Det opretholder ikke den indsatte ordre. Hvis værdierne indsættes som a, x, b, kan de gemme som, x, a, b. Det LinkedSet opretholder den indsatte rækkefølge. Hvis elementerne indsættes i en, x, b rækkefølge, vil lagringsrækkefølgen være a, x, b. Det TreeSet implementerer Set og NavigableSet. Det opretholder ikke rækkefølgen af indsættelse, men gemmer elementerne i den sorterede rækkefølge. Hvis den indsatte rækkefølge er a, c, b, gemmes elementerne som a, b, c. Alle HashSet, LinkedHashSet og TreeSet vil ikke have nogen duplikatelementer.
Liste vs sæt | |
Listegrænseflade er undergrænsefladen i Samling, der indeholder metoder til udførelse af operationer såsom indsættelse, sletning baseret på indekset. | Set Interface er en undergrænseflade i Collection, der indeholder metoder til at udføre operationer som indsættelse, sletning af elementer, mens de unikke elementer bevares. |
Klasser | |
ArrayList, Vector og LinkedList er klasser, der implementerer List interface. | HashSet, LinkedHashSet og TreeSet er klasser, der implementerer Set-interface. |
Elementkopiering | |
Liste understøtter duplikering af elementer. | Sæt understøtter ikke duplikering af elementer. Elementer er unikke. |
Samlinger bruges til at gemme elementer dynamisk. Programmeringssprog som Java leverer Collection interface. Liste og sæt er to grænseflader, der hører til Samling-interface. Begge grænseflader udvider Collection. Denne artikel diskuterede forskellen mellem Liste og sæt. Den vigtigste forskel mellem Liste og Sæt er, at Liste understøtter lagring af det samme element flere gange, mens Sæt ikke understøtter lagring af det samme element flere gange. Sæt opretholder altid unikke elementer.
1.Point, selvstudier. “Java Collections.”, Tutorials Point, 8. januar 2018. Findes her