Nøgleforskel - Liste vs sæt
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 er erklæret, kan den ikke ændres. Hvis programmøren ønsker at gemme en værdi, der overstiger arraystørrelsen, skal han oprette en ny array 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 støtte fra samlinger. Der findes forskellige typer samlinger på programmeringssprog såsom Java. Liste og sæt er grænseflader for samlingshierarkiet. Basisgrænsefladen til andre grænseflader er Collection. Hovedforskellen mellem List og Set er, at List understøtter lagring af det samme element flere gange, mens Set ikke understøtter lagring af det samme element flere gange. Derfor,et sæt tillader ikke duplikering.
INDHOLD
1. Oversigt og nøgleforskel
2. Hvad er liste
3. Hvad er indstillet
4. Ligheder mellem liste og sæt
5. Sammenligning side om side - Liste vs sæt i tabelform
6. Resumé
Hvad er liste?
Listen er en grænseflade, der udvider samling-grænsefladen. Der er en række metoder i samlingsgrænsefladen. Add-metoden hjælper med at tilføje et element. 'Fjern metoden' er at fjerne et element. Der er 'addAll-metode' for at tilføje flere elementer, mens 'removeAll-metode' for at fjerne elementerne fra samlingen. Metoden indeholder hjælper med at finde ud af, om et bestemt objekt er til stede på listen eller ej. 'ContainAll' er at finde ud af, om der er et sæt objekter i samlingen. Iterator-metoden bruges til at løbe gennem emnerne på listen. Når listen udvider samlingen, hører alle metoderne til indsamling til listen. Ud over disse metoder har listen metoder som get and set. Programmøren kan få en værdi ved et bestemt indeks ved hjælp af get-metoden. Programmøren kan indstille en værdi ved et bestemt indeks ved hjælp af indstillingsmetoden.'IndexOf' bruges til at finde indekset for et element.
I en liste kan operationerne udføres i henhold til positionen. Programmøren kan levere det dataelement, der skal føjes til indekset. Så det føjes til det specifikke indeks. Hvis programmøren ikke giver et indeks, tilføjes elementet til 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 List. I en ArrayList er adgang til et element hurtigt, men indsættelse og sletning er lavere. ArrayList er ikke trådsikker. Adgang til den samme ArrayList fra flere tråde giver muligvis ikke det samme resultat. I en LinkedList er elementerne knyttet til både baglæns og fremad. Indsættelse og sletning af elementer ved hjælp af en LinkedList er hurtigere end ArrayList. LinkedList implementerer liste og kø begge. Vector ligner ArrayList, men den er slidbanesikker, fordi alle metoderne er synkroniserede.
Hvad er indstillet?
Set er en grænseflade, der udvider Collection-grænsefladen. Da Set-interface udvider Collection, hører alle metoderne til Collection også til Set. Et sæt understøtter ikke duplikationsværdier. Derfor kan programmøren ikke gemme det samme element to gange. Det opretholder et unikt sæt af elementer. SortedSet-grænsefladen udvider Set-grænsefladen. SortedSet opretholder elementerne i sorteret rækkefølge. NavigableSet-grænsefladen udvider SortedSet. NavigableSet giver navigationsmetoder som f.eks. Nedre, gulv, loft osv.
HashSet, LinkedHashSet og TreeSet er nogle klasser, der implementerer Set-grænsefladen. HashSet implementerer Set-interface. Den opretholder ikke den indsatte rækkefølge. Hvis værdierne indsættes som a, x, b, gemmes den muligvis som, x, a, b. LinkedSet opretholder den indsatte rækkefølge. Hvis elementerne indsættes i a, x, b rækkefølge, vil lagringsordren være a, x, b. TreeSet implementerer Set og NavigableSet. Det opretholder ikke rækkefølgen for 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 har ingen duplikatelementer.
Hvad er ligheden mellem liste og sæt?
- Både liste- og sæt-grænseflader udvider samling-grænsefladen.
- Både List og Set supporthandlinger såsom tilføjelse, fjernelse af elementer.
Hvad er forskellen mellem liste og sæt?
Liste vs sæt |
|
List Interface er subgrænsefladen til Collection, der indeholder metoder til at udføre operationer som indsættelse, sletning baseret på indekset. | Set Interface er en undergrænseflade til Collection, der indeholder metoder til at udføre operationer, såsom at indsætte, slette elementer, mens de unikke elementer opretholdes. |
Klasser | |
ArrayList, Vector og LinkedList er klasser, der implementerer List interface. | HashSet, LinkedHashSet og TreeSet er klasser, der implementerer Set-interface. |
Element duplikering | |
Liste understøtter duplikering af elementer. | Sæt understøtter ikke duplikering af elementer. Elementer er unikke. |
Resumé - Liste vs sæt
Samlinger bruges til at gemme elementer dynamisk. Programmeringssprog som f.eks. Java giver samlingsgrænseflade. Liste og sæt er to grænseflader, der hører til samlingsgrænsefladen. Begge grænseflader udvider samlingen. Denne artikel diskuterede forskellen mellem liste og sæt. Hovedforskellen mellem List og Set er, at List understøtter lagring af det samme element flere gange, mens Set ikke understøtter lagring af det samme element flere gange. Sæt opretholder altid unikke elementer.