Wat is het verschil tussen Set en List?

Wat is het fundamentele verschil tussen de interfaces Set<E>en List<E>?


Antwoord 1, autoriteit 100%

Listis een geordende reeks elementen, terwijl Seteen afzonderlijke lijst van elementen is die ongeordend is (dank u, Quinn Taylor).

List<E>:

Een geordende collectie (ook bekend als a
volgorde). De gebruiker van deze interface
heeft nauwkeurige controle over waar in de
lijst elk element wordt ingevoegd. De
gebruiker heeft toegang tot elementen door hun
integer index (positie in de lijst),
en zoek naar elementen in de lijst.

Set<E>:

Een verzameling die no . bevat
dubbele elementen. Meer formeel,
sets bevatten geen paar elementen e1
en e2 zodat e1.gelijk is aan (e2), en at
meest één null-element. Zoals geïmpliceerd door
zijn naam, deze interface modelleert de
wiskundige set abstractie.


Antwoord 2, autoriteit 46%

Lijst Instellen
Duplicaten Ja Nee
Bestelling Besteld Afhankelijk van implementatie
Positietoegang Ja Nee

Antwoord 3, autoriteit 14%

Geordende lijsten van elementen (uniek of niet)
Voldoet aan de Java-interface genaamd List
Toegankelijk via index

Geïmplementeerd met

  • LinkedList
  • ArrayList

Lijsten met unieke elementen:
Voldoet aan de Java-interface genaamd Set
Is niettoegankelijk voor index

Geïmplementeerd met

  • HashSet (ongeordend)
  • LinkedHashSet (besteld)
  • TreeSet (gesorteerd op natuurlijke volgorde of op opgegeven comparator)

Beide interfaces Seten Listvoldoen aan de Java-interface genaamd Collection


Antwoord 4, autoriteit 6%

Een set kan geen dubbele elementen bevatten, terwijl een lijst dat wel kan. Een lijst (in Java) houdt ook orde in.


Antwoord 5, autoriteit 3%

  • Een lijst is een geordende groepering van items
  • Een set is een ongeordende groepering van items waarbij geen duplicaten zijn toegestaan (meestal)

Conceptueel verwijzen we meestal naar een ongeordende groepering die duplicaten toestaat als een tas en geen duplicaten toestaat als een set.


Antwoord 6, autoriteit 2%

Lijst

  1. Is een geordende groepering van elementen.
  2. Lijst wordt gebruikt om elementen met duplicaten te verzamelen.
  3. Nieuwe methoden zijn gedefinieerd in Lijst
    interface.

Instellen

  1. Is een ongeordende groepering van elementen.
  2. Set wordt gebruikt voor het verzamelen van elementen zonder duplicaten.
  3. Er zijn geen nieuwe methoden gedefinieerd binnen de Set-interface, dus we moeten de methoden van de verzamelingsinterface alleen gebruiken met Set-subklassen.

Antwoord 7, autoriteit 2%

Lijst:

Lists staan over het algemeen dubbele objecten toe.
Lists moeten worden besteld en zijn daarom toegankelijk via index.

Implementatieklassen omvatten: ArrayList, LinkedList, Vector

Instellen:

Sets staan geendubbele objecten toe.
De meeste implementaties zijn ongeordend, maar het is implementatiespecifiek.

Implementatieklassen omvatten:
HashSet(ongeordend),
LinkedHashSet(besteld),
TreeSet(volgens natuurlijke volgorde of door verstrekte vergelijker)


Antwoord 8

Als we het over de Java-interfaces hebben, waarom niet kijken naar de Javadoc ?!

  • Een Listis een geordende verzameling (volgorde), die doorgaans toelaat:
    duplicaten
  • Een Seta is een verzameling die geen dubbele elementen bevat, iteratie
    bestelling kan worden gegarandeerd door de implementatie

Er is GEEN melding gemaakt van een gebrek aan orde met betrekking tot Sets: het hangt af van de implementatie.


Antwoord 9

Lijst:
Lijst staat dubbele elementen en null-waarden toe. Gemakkelijk te doorzoeken met behulp van de bijbehorende index van de elementen en het zal ook elementen in invoegvolgorde weergeven.
Voorbeeld:(linkedlist)

import java.util.*;
public class ListExample {
 public static void main(String[] args) {
    // TODO Auto-generated method stub
    List<Integer> l=new LinkedList<Integer>();
    l.add(001);
    l.add(555);
    l.add(333);
    l.add(888);
    l.add(555);
    l.add(null);
    l.add(null);
    Iterator<Integer> il=l.iterator();
    System.out.println(l.get(0));
    while(il.hasNext()){
        System.out.println(il.next());
    }
    for(Integer str : l){
        System.out.println("Value:"+str);
    }
 }
}

Uitvoer:

1
1
555
333
888
555
null
null
Waarde:1
Waarde:555
Waarde:333
Waarde:888
Waarde:555
Waarde:null
Waarde:null

Instellen:
Set staat geen dubbele elementen toe en staat een enkele null-waarde toe. Het behoudt geen volgorde om elementen weer te geven. Alleen TreeSetwordt in oplopende volgorde weergegeven.

Voorbeeld:(TreeSet)

import java.util.TreeSet;
public class SetExample {
 public static void main(String[] args) {
    // TODO Auto-generated method stub
    TreeSet<String> set = new TreeSet<String>();
    try {
        set.add("hello");
        set.add("world");
        set.add("welcome");
        set.add("all");
        for (String num : set) {
            System.out.println( num);
        }
        set.add(null);
    } catch (NullPointerException e) {
        System.out.println(e);
        System.out.println("Set doesn't allow null value and duplicate value");
    }
 }
}

Uitvoer:

alle
hallo
welkom
wereld
java.lang.NullPointerException
Set staat geen null-waarde en dubbele waarde toe


Antwoord 10

Dit is misschien niet het antwoord dat u zoekt, maar de JavaDoc van de collections-klassen is eigenlijk behoorlijk beschrijvend. Kopieer/plakt:

Een geordende collectie (ook bekend als a
volgorde). De gebruiker van deze interface
heeft nauwkeurige controle over waar in de
lijst elk element wordt ingevoegd. De
gebruiker heeft toegang tot elementen door hun
integer index (positie in de lijst),
en zoek naar elementen in de lijst.

In tegenstelling tot sets, zijn lijsten meestal toegestaan
dubbele elementen. Meer formeel,
lijsten staan meestal paren van . toe
elementen e1 en e2 zodanig dat
e1.is gelijk aan (e2), en ze zijn meestal
sta meerdere null-elementen toe als ze
helemaal geen null-elementen toestaan. Het is niet
ondenkbaar dat iemand zou willen
om een lijst te implementeren die verbiedt
duplicaten, door runtime te gooien
uitzonderingen wanneer de gebruiker probeert om
voeg ze in, maar we verwachten dit gebruik
zeldzaam zijn.


Antwoord 11

Een set is een ongeordende groep van verschillende objecten – er zijn geen dubbele objecten toegestaan. Het wordt over het algemeen geïmplementeerd met behulp van de hash-code van de objecten die worden ingevoegd. (Specifieke implementaties kunnen volgorde toevoegen, maar de Set-interface zelf niet.)

Een lijst is een geordende groep objecten die duplicaten kan bevatten. Het kan worden geïmplementeerd met een ArrayList, LinkedList, enz.


Antwoord 12

1.Lijst staat dubbele waarden toe en set staat geen dubbele waarden toe

2.Lijst behoudt de volgorde waarin u elementen in de lijst hebt ingevoegd
Set handhaaft de volgorde niet.
3.Lijst is een geordende reeks elementen, terwijl Set een afzonderlijke lijst van elementen is die ongeordend is.


Antwoord 13

Enkele noemenswaardige verschillen tussen List en Set in Java worden als volgt gegeven:

1)Het fundamentele verschil tussen Lijst en Set in Java is het toestaan van dubbele elementen. Lijst in Java staat duplicaten toe, terwijl Set geen duplicaat toestaat. Als u duplicaat in Set invoegt, vervangt het de oudere waarde. Elke implementatie van Set in Java bevat alleen unieke elementen.

2)Een ander belangrijk verschil tussen List en Set in Java is de volgorde. Lijst is een geordende verzameling, terwijl Set een ongeordende verzameling is. Lijst handhaaft de invoegvolgorde van elementen, wat betekent dat elk element dat eerder wordt ingevoegd, op een lagere index gaat dan elk element dat erna wordt ingevoegd. Set in Java handhaaft geen enkele volgorde. Hoewel Set een ander alternatief biedt, SortedSet genaamd, dat Set-elementen kan opslaan in een specifieke sorteervolgorde die is gedefinieerd door Vergelijkbare en Vergelijkingsmethoden van objecten die zijn opgeslagen in Set.

3)Populaire implementatie van de List-interface in Java omvat ArrayList, Vector en LinkedList. Terwijl de populaire implementatie van de Set-interface HashSet, TreeSet en LinkedHashSet omvat.

Het is vrij duidelijk dat als je de invoegvolgorde of het object moet behouden en je verzameling duplicaten kan bevatten, List een goede keuze is. Aan de andere kant, als het uw vereiste is om een unieke collectie te behouden zonder duplicaten, dan is Set de juiste keuze.


Antwoord 14

Lijst versus set

1) Set staat geen duplicaten toe. Lijst staat duplicaat toe. Op basis van de implementatie van Set, handhaaft het ook de invoegvolgorde.

bijv.: LinkedHashSet. Het handhaaft de invoegvolgorde. Raadpleeg klik hier

2) bevatmethode. Door de aard van de Set zal het betere toegang bieden. In het beste geval is het o(1). Maar List heeft een prestatieprobleem om containsop te roepen.


Antwoord 15

Factor Lijst Instellen
Is geordende groeperingselementen? JA NEE
Biedt positionele toegangdoor index? JA NEE
Kan dubbele elementenopslaan? JA NEE
Kan meerdere null-elementen worden opgeslagen? JA NEE
Kinderen: ArrayList, LinkedList, Vectoren Stack HashSeten LinkedHashSet

Antwoord 16

Alle klassen Listbehouden de volgorde van invoeging. Ze gebruiken verschillende implementaties op basis van prestaties en andere kenmerken (bijv. ArrayListvoor de snelheid van toegang tot een specifieke index, LinkedListvoor het eenvoudig handhaven van de volgorde). Omdat er geen sleutel is, zijn duplicaten toegestaan.

De klassen Setbehouden de invoegvolgorde niet. Ze kunnen optioneel een specifieke volgorde opleggen (zoals bij SortedSet), maar hebben meestal een door de implementatie gedefinieerde volgorde op basis van een hashfunctie (zoals bij HashSet). Aangezien Sets toegankelijk zijn met een sleutel, zijn duplicaten niet toegestaan.


Antwoord 17

Bestellen… een lijst heeft een bestelling, een set niet.


Antwoord 18

Lijst:

  1. Duplicaten toegestaan.
  2. Geordend in groeperingselementen. (Met andere woorden met een vaste volgorde. Het is niet nodig om in oplopende volgorde te sorteren)

Instellen:

  1. Duplicaten zijn niet toegestaan.
  2. Ongeordend in groeperingselementen. (Met andere woorden zonder duidelijke volgorde. Het kan wel of niet in oplopende volgorde worden gerangschikt)

Antwoord 19

Lijsten Setzijn beide interfaces. Ze breiden allebei de collectie-interface uit. De belangrijke verschillen tussen set en lijst zijn:

  1. Dubbele objecten

Het belangrijkste verschil tussen Listen Setis dat Listduplicaten toestaat terwijl Set geen duplicaten toestaat.

  1. Bestellen

Lijstis een geordende verzameling die de invoegvolgorde handhaaft, wat betekent dat bij het weergeven van de lijstinhoud de elementen worden weergegeven in dezelfde volgorde als waarin ze in de lijst zijn ingevoegd.

Setis een ongeordende verzameling, er wordt geen volgorde aangehouden. Er zijn maar weinig implementaties van Setdie de volgorde behouden, zoals LinkedHashSet(het handhaaft de elementen in de volgorde van invoegen).

  1. Null-elementen

Lijststaat een willekeurig aantal null-elemententoe. Setkan maximaal één null-elementbevatten.


Antwoord 20

Set<E>en List<E>worden beide gebruikt om elementen van het type Eop te slaan. Het verschil is dat Setongeordend wordt opgeslagen en geen dubbele waarden toestaat. Listwordt gebruikt om elementen op een geordende manier op te slaan en staat dubbele waarden toe.

Set-elementen zijn niet toegankelijk via een indexpositie en List-elementen zijn toegankelijk met een indexpositie.


Antwoord 21

Instellen:
Een set kan geen dubbele elementen in zijn collecties hebben. het is ook een ongeordende verzameling. Om toegang te krijgen tot de gegevens van Set, is het vereist om alleen Iterator te gebruiken en is het ophalen op basis van indexen niet mogelijk. Het wordt voornamelijk gebruikt wanneer het verzamelen van uniciteit vereist is.

Lijst:
Een lijst kan dubbele elementen hebben, met de natuurlijke volgorde zoals deze wordt ingevoegd.
Zo kunnen gegevens worden opgehaald op basis van index of iterator. Het wordt veel gebruikt om verzamelingen op te slaan die toegankelijk moeten zijn op basis van index.


Antwoord 22

Hallo Er zijn al zoveel antwoorden gegeven..Laat me op enkele punten wijzen die tot nu toe niet zijn genoemd:

  • De meeste List-implementaties (ArrayList,Vector) implementeren RandomAccess-interface, een markeringsinterface voor snellere toegang. Geen van de Set-implementaties doet dat.
  • List gebruikt één speciale Iterator genaamd ListIteratordie iteratie in beide richtingen ondersteunt. Set gebruikt Iterator die slechts 1-way iteratie ondersteunt
  • HashSet neemt 5,5 keer meer geheugenin beslag dan ArrayList om op te slaan
    hetzelfde aantal elementen.

Antwoord 23

Het grootste verschil is het basisconcept.

Vanuit de interface Seten List. Setis een wiskundeconcept. De methode Setbreidt de verzameling uit. Voeg echter geen nieuwe methode toe. size() betekent kardinaliteit (meer is BitSet.cardinality, Linear counter,Log Log,HyperLogLog). addAll() betekent unie. behoudenAll() betekent kruising. removeAll() betekent verschil.

Echter Lijstontbreken deze concepten. Lijstvoeg veel methoden toe om het reeksconcept te ondersteunen dat de Collection-interface niet levert. kernconcept is INDEX. zoals add(index,element),get(index),search(indexOf()),remove(index) element. Lijst biedt ook “VerzamelingsweergavesubLijst. Setheeft geen weergave. hebben geen positionele toegang. Lijstbiedt ook veel algoritmen in de klasse Collecties. sort(Lijst),binairZoeken(Lijst),reverse(Lijst),shuffle(Lijst),fill(Lijst). de methode params is de Lijstinterface. dubbele elementen zijn slechts het resultaat van concepten. niet het wezenlijke verschil.

Dus het essentiële verschil is het concept. Setis een wiskundesetconcept.Lijstis een reeksconcept.


Antwoord 24

Hier is een duidelijk voorbeeld met groovy. ik maak een set en een lijst.
dan probeer ik 20 willekeurig gegenereerde waarde op te slaan in elke lijst. de gegenereerde waarde kan tussen 0 en 5 liggen

s = [] as Set
l = []
max = 5
print "random Numbers :"
20.times{
e = (int)Math.random()*max
s << e
l << e
print "$e, "
}
println "\n"
println "Set : $s "
println "list : $l

Het resultaat:

willekeurige getallen: 4, 1, 4, 0, 1, 2, 4, 0, 0, 3, 4, 3, 2, 0, 4, 0, 1, 3, 1, 3

Instellen: [4, 1, 0, 2, 3]

lijst: [4, 1, 4, 0, 1, 2, 4, 0, 0, 3, 4, 3, 2, 0, 4, 0, 1, 3, 1, 3]

Je kunt zien dat het verschil is dat:

  • Set staat geen dubbele waarden toe.
  • Lijst dubbele waarden toestaan.

Antwoord 25

ONDERWERP Naam: Lijst VS Set

Ik heb zojuist het belangrijkste onderwerp van Java, genaamd Collections Framework, doorgenomen. Ik dacht mijn kleine kennis over collecties met je te delen. Lijst, set, kaart zijn het belangrijkste onderwerp ervan. Dus laten we beginnen met Lijst en Set.

Verschil tussen lijst en set:

  1. List is een collectieklasse die de klasse AbstractListuitbreidt, terwijl as Set een collectieklasse is die de klasse AbstractSetuitbreidt, maar beide implementeren de Collectie-interface.

  2. Lijstinterface staat dubbele waarden (elementen) toe, terwijl Set-interface geen dubbele waarden toestaat. In het geval van dubbele elementen in Set, vervangt het oudere waarden.

  3. Lijstinterface staat NULL-waarden toe, terwijl de interface Set geen Null-waarden toestaat. In het geval dat Null-waarden in Set worden gebruikt, geeft dit NullPointerException.

  4. Lijstinterface handhaaft invoegvolgorde. Dat betekent dat de manier waarop we de elementen in de lijst toevoegen op dezelfde manier als we deze verkrijgen met iterator of voor elke stijl. Terwijl Setimplementaties niet noodzakelijkerwijs de invoegvolgorde behouden. (Hoewel SortedSetTreeSetgebruikt, en LinkedHashSetde invoegvolgorde behoudt).

  5. Lijstinterface heeft zijn eigen gedefinieerde methoden, terwijl de Set-interface geen eigen methode heeft, dus Set gebruikt alleen de verzamelingsinterfacemethoden.

  6. Lijstinterface heeft één legacy-klasse genaamd Vector, terwijl Set-interface geen legacy-klasse heeft

  7. Last but not least… De methode listIterator()kan alleen worden gebruikt om door de elementen binnen List Classes te bladeren, terwijl we de methode iterator() kunnen gebruiken om toegang te krijgen tot de klasse Set elementen

Kunnen we nog iets toevoegen? Laat het me weten.

Bedankt.


Antwoord 26

Instellen:

Kan geen dubbele waarden hebben
Bestellen is afhankelijk van de uitvoering. Standaard wordt het niet besteld
Geen toegang via index

Lijst:

Kan dubbele waarden hebben
Standaard besteld
Kan toegang hebben via index

Other episodes