it-swarm.com.de

Was ist der Unterschied zwischen Set und List?

Was ist der grundlegende Unterschied zwischen den Schnittstellen Set<E> und List<E>?

386
Johanna

List ist eine geordnete Folge von Elementen, während Set eine eindeutige Liste von Elementen ist, die ungeordnet ist (danke, Quinn Taylor ).

List<E>:

Eine geordnete Sammlung (auch als Sequenz bezeichnet). Der Benutzer dieser Schnittstelle hat die genaue Kontrolle darüber, wo in der Liste jedes Element eingefügt wird. Der Benutzer kann über seinen Ganzzahlindex (Position in der Liste) auf Elemente zugreifen und nach Elementen in der Liste suchen.

Set<E>:

Eine Sammlung, die keine doppelten Elemente enthält. Genauer gesagt enthalten Mengen kein Elementpaar e1 und e2, sodass e1.equals (e2) und höchstens ein Nullelement sind. Wie der Name andeutet, modelliert diese Schnittstelle die Abstraktion der mathematischen Menge.

478
Andrew Hare
╔═══════════════════╦══════════════════════╦═════════════════════════════╗
║                   ║         List         ║            Set              ║
╠═══════════════════╬══════════════════════╬═════════════════════════════╣
║     Duplicates    ║          YES         ║            NO               ║
╠═══════════════════╬══════════════════════╬═════════════════════════════╣
║       Order       ║       ORDERED        ║  DEPENDS ON IMPLEMENTATION  ║
╠═══════════════════╬══════════════════════╬═════════════════════════════╣
║ Positional Access ║         YES          ║            NO               ║ 
╚═══════════════════╩══════════════════════╩═════════════════════════════╝
209
Sergii Shevchyk

Sortierte Elementlisten (eindeutig oder nicht)
Entspricht der Java-Schnittstelle mit dem Namen List
Kann über den Index aufgerufen werden

implemetentiert mit

  • LinkedList
  • Anordnungsliste

Listen einzigartiger Elemente:
Entspricht der Java-Schnittstelle mit dem Namen Set
Kann nicht über den Index aufgerufen werden

implemetentiert mit

  • HashSet (ungeordnet)
  • LinkedHashSet (bestellt)
  • TreeSet (sortiert nach natürlicher Reihenfolge oder nach bereitgestelltem Vergleich)

Beide Schnittstellen Set und List entsprechen der Java-Schnittstelle Collection

Ein Set kann keine doppelten Elemente enthalten, während eine Liste dies kann. Eine Liste (in Java) impliziert auch Reihenfolge.

27
Peter
  • Eine Liste ist eine geordnete Gruppierung von Elementen
  • Ein Set ist eine ungeordnete Gruppierung von Elementen, bei der (normalerweise) keine Duplikate zulässig sind.

Konzeptionell beziehen wir uns normalerweise auf eine ungeordnete Gruppierung, bei der Duplikate als Bag und Duplikate als Set nicht zulässig sind.

16
Hardwareguy

Liste

  1. Ist eine geordnete Gruppierung von Elementen.
  2. Liste wird zur Sammlung von Elementen mit Duplikaten verwendet.
  3. Neue Methoden werden in der List-Oberfläche definiert.

Set

  1. Ist eine ungeordnete Gruppierung von Elementen.
  2. Set wird zur Sammlung von Elementen ohne Duplikate verwendet.
  3. In der Set-Schnittstelle sind keine neuen Methoden definiert, daher müssen die Methoden der Collection-Schnittstelle nur mit Set-Unterklassen verwendet werden.
10

Liste:

Lists erlauben im Allgemeinen doppelte Objekte. Lists müssen bestellt werden und sind daher über den Index zugänglich.

Implementierungsklassen umfassen: ArrayList, LinkedList, Vector

Einstellen:

Sets do not erlaube doppelte Objekte. Die meisten Implementierungen sind ungeordnet, jedoch implementierungsspezifisch.

Die Implementierungsklassen umfassen: HashSet (ungeordnet), LinkedHashSet (bestellt), TreeSet (bestellt in natürlicher Reihenfolge oder durch mitgelieferten Komparator)

9
csds

Wenn wir über die Java -Oberflächen sprechen, warum nicht den Javadoc anschauen ?!

  • Ein List ist eine geordnete Sammlung (Sequenz), die in der Regel Duplikate zulässt
  • Eine Set a-Auflistung enthält keine doppelten Elemente. Die Iterationsreihenfolge kann von der Implementierung garantiert werden

Es gibt KEINE Erwähnung von fehlender Reihenfolge in Bezug auf Sets: Es hängt von der Implementierung ab.

7

Eine Menge ist eine ungeordnete Gruppe unterschiedlicher Objekte. Es sind keine doppelten Objekte zulässig. Die Implementierung erfolgt in der Regel mit dem Hash-Code der einzufügenden Objekte. (Bestimmte Implementierungen können die Reihenfolge ändern, die Set-Schnittstelle selbst jedoch nicht.)

Eine Liste ist eine geordnete Gruppe von Objekten, die Duplikate enthalten können. Es könnte mit einem ArrayList, LinkedList usw. implementiert werden.

5
Quinn Taylor

Dies ist möglicherweise nicht die Antwort, die Sie suchen, aber das JavaDoc der Collections-Klassen ist tatsächlich ziemlich aussagekräftig. Kopieren/Einfügen:

Eine geordnete Sammlung (auch als Sequenz bezeichnet). Der Benutzer dieser Schnittstelle hat die genaue Kontrolle darüber, wo in der Liste jedes Element eingefügt wird. Der Benutzer kann über seinen Ganzzahlindex (Position in der Liste) auf Elemente zugreifen und nach Elementen in der Liste suchen.

Im Gegensatz zu Mengen sind in Listen in der Regel doppelte Elemente zulässig. Genauer gesagt, erlauben Listen typischerweise Paare von Elementen e1 und e2, so dass e1.equals (e2) sind, und sie erlauben typischerweise mehrere Nullelemente, wenn sie überhaupt Nullelemente erlauben. Es ist nicht unvorstellbar, dass jemand eine Liste implementieren möchte, die Duplikate verbietet, indem er Laufzeitausnahmen auslöst, wenn der Benutzer versucht, sie einzufügen, aber wir erwarten, dass diese Verwendung selten ist.

5

Liste:
Liste erlaubt doppelte Elemente und Nullwerte. Einfache Suche über den entsprechenden Index der Elemente und Anzeige der Elemente in der Reihenfolge ihrer Einfügung. Beispiel: (verknüpfte Liste)

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);
    }
 }

}

Ausgabe:

1
1
555
333
888
555
Null
Null
Wert: 1
Wert: 555
Wert: 333
Wert: 888
Wert: 555
Wert: null
Wert: null

Set:
Set erlaubt keine doppelten Elemente und erlaubt einen einzelnen Nullwert. Es wird keine Reihenfolge für die Anzeige von Elementen beibehalten. Nur TreeSet wird in aufsteigender Reihenfolge angezeigt.

Beispiel: (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");
    }

 }

}

Ausgabe:

alle
Hallo
herzlich willkommen
Welt
Java.lang.NullPointerException
Set erlaubt keinen Nullwert und doppelten Wert

4
Indhu

1.List erlaubt doppelte Werte und set erlaubt keine doppelten Werte

2.List behält die Reihenfolge bei, in der Sie Elemente in die Liste eingefügt haben. Set behält die Reihenfolge nicht bei. 3.List ist eine geordnete Folge von Elementen, während Set eine nicht geordnete Liste von Elementen ist.

3
Rakesh

Liste Vs Set

1) Set erlaubt keine Duplikate. Liste erlaubt das Duplizieren. Basierend auf der Implementierung von Set wird auch die Einfügereihenfolge beibehalten.

zB: LinkedHashSet. Es behält die Einfügungsreihenfolge bei. Beziehen Sie sich bitte auf klicken Sie hier

2) enthält Methode. Aufgrund der Beschaffenheit des Sets bietet es eine bessere Zugriffsleistung. Am besten ist es o (1). Aber List hat Leistungsprobleme beim Aufrufen von contains.

3
Siva Kumar

Alle Klassen List behalten die Reihenfolge der Einfügung bei. Sie verwenden unterschiedliche Implementierungen basierend auf der Leistung und anderen Merkmalen (z. B. ArrayList für die Zugriffsgeschwindigkeit auf einen bestimmten Index, LinkedList für die einfache Aufrechterhaltung der Reihenfolge). Da es keinen Schlüssel gibt, sind Duplikate zulässig.

Die Klassen Set verwalten die Reihenfolge der Einfügungen nicht. Sie können optional eine bestimmte Reihenfolge festlegen (wie bei SortedSet), haben jedoch normalerweise eine implementierungsdefinierte Reihenfolge basierend auf einer Hash-Funktion (wie bei HashSet). Da auf Sets über Schlüssel zugegriffen wird, sind Duplikate nicht zulässig.

2
lavinio

Bestellung ... eine Liste hat eine Bestellung, ein Set nicht.

1
Ricardo Marimon

Liste:

  1. Erlaubte Duplikate.
  2. Sortiert in Gruppierungselementen (dh mit fester Reihenfolge. Keine Sortierung in aufsteigender Reihenfolge erforderlich)

Einstellen:

  1. Nicht erlaubt Duplikate.
  2. In Gruppierungselementen ungeordnet
1
vijaybhupathi

Einige nennenswerte Unterschiede zwischen List und Set in Java werden wie folgt angegeben:

1) Grundlegender Unterschied zwischen List und Set in Java erlaubt doppelte Elemente. Liste in Java erlaubt Duplikate, während Set keine Duplikate zulässt. Wenn Sie in Set ein Duplikat einfügen, wird der ältere Wert ersetzt. Jede Implementierung von Set in Java enthält nur eindeutige Elemente.

2) Ein weiterer signifikanter Unterschied zwischen List und Set in Java ist die Reihenfolge. Liste ist eine geordnete Sammlung, während Set eine ungeordnete Sammlung ist. List behält die Einfügereihenfolge der Elemente bei, dh jedes Element, das zuvor eingefügt wurde, erhält einen niedrigeren Index als jedes Element, das danach eingefügt wurde. Set in Java behält keine Reihenfolge bei. Obwohl Set eine andere Alternative namens SortedSet bereitstellt, die Set-Elemente in einer bestimmten Sortierreihenfolge speichern kann, die durch Comparable- und Comparator-Methoden von in Set gespeicherten Objekten definiert ist.

) Die beliebte Implementierung der List-Schnittstelle in Java umfasst ArrayList, Vector und LinkedList. Die beliebte Implementierung der Set-Schnittstelle umfasst HashSet, TreeSet und LinkedHashSet.

Es ist ziemlich klar, dass List ein guter Weg ist, wenn Sie die Reihenfolge der Einfügung oder das Objekt pflegen müssen und Ihre Sammlung Duplikate enthalten kann. Auf der anderen Seite ist Set der richtige Weg, wenn Sie eine eindeutige Sammlung ohne Duplikate führen möchten.

1

Hallo, es gibt bereits so viele Antworten. Lassen Sie mich auf einige Punkte hinweisen, die bisher nicht erwähnt wurden:

  • Die meisten List-Implementierungen (ArrayList, Vector) implementiere RandomAccess Interface, welches ein Marker-Interface für einen schnelleren Zugriff ist. Keine der Set-Implementierungen macht das.
  • List verwendet einen speziellen Iterator namens ListIteratorder die Iteration in beide Richtungen unterstützt. Set verwendet Iterator, der nur eine einfache Iteration unterstützt
  • HashSet benötigt 5,5-mal mehr Speicher als ArrayList, um die gleiche Anzahl von Elementen zu speichern.
0
smruti ranjan

Set<E> und List<E> werden beide zum Speichern von Elementen des Typs E verwendet. Der Unterschied besteht darin, dass Set ungeordnet gespeichert wird und keine doppelten Werte zulässt. List wird zum Speichern von Elementen in geordneter Reihenfolge verwendet und erlaubt doppelte Werte.

Auf Set Elemente kann nicht über eine Indexposition zugegriffen werden, und auf List Elemente kann über eine Indexposition zugegriffen werden.

0
saibhushan