Frage

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

War es hilfreich?

Lösung

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

List<E>:

  

Eine geordnete Sammlung (auch als bekannt   Reihenfolge). Der Benutzer dieser Schnittstelle   hat präzise Kontrolle darüber, wo in der   Liste jedes Element eingesetzt ist. Das   Benutzer können Elemente zugreifen, indem ihre   ganzzahliger Index (Position in der Liste),   und für die Elemente in der Liste suchen.

Set<E>:

  

Eine Sammlung, die nicht enthält   doppelte Elemente. Formeller,   Sätze kein Paar von Elementen enthalten e1   und e2, so daß e1.equals (e2) und zumin   höchstens ein Nullelement. Wie implizierten   sein Name, diese Schnittstelle modelliert die   mathematischer Satz Abstraktion.

Andere Tipps

╔═══════════════════╦══════════════════════╦═════════════════════════════╗
║                   ║         List         ║            Set              ║
╠═══════════════════╬══════════════════════╬═════════════════════════════╣
║     Duplicates    ║          YES         ║            NO               ║
╠═══════════════════╬══════════════════════╬═════════════════════════════╣
║       Order       ║       ORDERED        ║  DEPENDS ON IMPLEMENTATION  ║
╠═══════════════════╬══════════════════════╬═════════════════════════════╣
║ Positional Access ║         YES          ║            NO               ║ 
╚═══════════════════╩══════════════════════╩═════════════════════════════╝

Sortierte Listen von Element (einzigartig oder nicht)
Konform mit Java-Schnittstelle namens List
Kann Index zugegriffen werden

implemetented mit

  • LinkedList
  • Arraylist

Listen von einzigartigen Elementen:
Konform mit Java-Schnittstelle namens Set
nicht Index zugegriffen werden

implemetented mit

  • HashSet (ungeordnete)
  • LinkedHashSet (geordnet)
  • TreeSet (sortiert nach natürlicher Reihenfolge oder von einer dritten Komparator)

Beide Schnittstellen Set und List auf Java entsprechen Schnittstelle mit dem Namen Collection

Ein Set kann nicht enthalten doppelte Elemente während einer Liste kann. Eine Liste (in Java) auch impliziert Ordnung.

  • Eine Liste ist eine geordnete Gruppierung von Elementen
  • Ein Set ist eine ungeordnete Gruppierung von Elementen ohne Duplikate erlaubt (in der Regel)

Konzeptionell wir in der Regel zu einer ungeordneten Gruppierung beziehen, die Duplikate als Beutel erlaubt und Duplikate nicht zulässt, ist ein Set.

Liste

  1. ist eine geordnete Gruppierung von Elementen.
  2. Liste ist die Sammlung von Elementen mit Dubletten verwendet.
  3. Es werden neue Methoden innerhalb Liste definiert Schnittstelle.

  1. ist eine ungeordnete Gruppierung von Elementen.
  2. auf Sammlung von Elementen ohne Duplikate benutzt.
  3. Es werden keine neue Methoden definiert innerhalb Set-Schnittstelle, so dass wir nur mit Set-Subklassen Collection-Schnittstelle Methoden verwenden.

Liste:

Lists erlaubt im Allgemeinen doppelte Objekte. Lists muss daher durch Index zugänglich bestellt werden und sind.

Implementierungsklassen umfassen: ArrayList, LinkedList, Vector

Set:

Sets tun nicht erlaubt doppelte Objekte. Die meisten Implementierungen sind ungeordnete, aber es ist die Umsetzung spezifisch.

Implementierungsklassen sind:  HashSet (ungeordnete),  LinkedHashSet (geordnet),  TreeSet (geordnet nach natürlicher Reihenfolge oder von einer dritten Komparator)

Als wir über die Java-Schnittstellen sprechen, warum an der Javadoc schaut nicht?!

  • A List ist eine geordnete Sammlung (Sequenz), die in der Regel ermöglicht Duplikate
  • A Set a Sammlung, die keine doppelten Elemente enthält, Iteration Um durch die Umsetzung gewährleistet werden kann

Es gibt keine Erwähnung über Mangel an Ordnung in Bezug auf Sets. Es über die Umsetzung hängt

Dies ist vielleicht nicht die Antwort sein, die Sie suchen, aber die JavaDoc der Sammlungen Klassen ist eigentlich ziemlich beschreibend. Kopieren / Einfügen:

  

Eine geordnete Sammlung (auch als bekannt   Reihenfolge). Der Benutzer dieser Schnittstelle   hat präzise Kontrolle darüber, wo in der   Liste jedes Element eingesetzt ist. Das   Benutzer können Elemente zugreifen, indem ihre   ganzzahliger Index (Position in der Liste),   und für die Elemente in der Liste suchen.

     

Im Gegensatz zu Sätzen, in der Regel Listen erlauben   doppelte Elemente. Formeller,   Listen ermöglichen typischerweise Paare von   e1 und e2 Elemente derart, dass   e1.equals (e2), und sie in der Regel   können mehrere null Elemente, wenn sie   erlauben null Elemente überhaupt. Es ist nicht   undenkbar, dass jemand wünschen könnte   eine Liste zu implementieren, die verbieten   Duplikate, durch Laufzeit werfen   Ausnahmen, wenn der Benutzer versucht,   legen Sie sie, aber wir erwarten, dass diese Nutzung   selten zu sein.

Ein Satz ist eine ungeordnete Gruppe der verschiedenen Objekte - keine doppelten Objekte sind erlaubt. Es wird im Allgemeinen der Hash-Code der Objekte implementiert eingeführt wird. (Spezifische Implementierungen Bestellung hinzufügen kann, aber die Set-Schnittstelle selbst nicht.)

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

1.List erlaubt doppelte Werte und does'nt eingestellt Duplikate erlauben

2.List behält die Reihenfolge, in der Elemente in der Liste eingefügt Set does'nt Ordnung aufrechtzuerhalten. 3.List ist eine geordnete Folge von Elementen, während Set eine eindeutige Liste von Elementen ist, die ungeordnet ist.

Liste Vs Set

1) Stellen Sie keine Duplikate zulassen. Liste ermöglicht duplizieren. Basierend auf der Implementierung von Set, es behält auch den Anzeigenauftrag.

zB: LinkedHashSet. Es unterhält die Einfügung order.Please hier klicken

2) enthält Methode. Durch die Art des Sets wird es eine bessere Leistung für den Zugriff geben. Im besten Fall seiner o (1). Aber Liste hat Performance-Problem contains aufzurufen.

Liste:
Liste lässt doppelte Elemente und Nullwerte. Leicht zu suchen, den entsprechenden Index der Elemente verwendet, und es wird auch Elemente in Einsetzfolge anzuzeigen. Beispiel: (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);
    }
 }

}

Ausgang:

1 | 1 | 555
333
888
555
null
null
Wert: 1 | Wert: 555
Wert: 333
Wert: 888
Wert: 555
Wert: null
Wert: null

:
Set ist damit keine doppelten Elemente und es erlauben, einzelne null value.It wird keine Ordnung halten elements.Only TreeSet angezeigt werden 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");
    }

 }

}

Ausgang:

Alle
hallo
willkommen bei Welt
java.lang.NullPointerException
Set nicht Nullwert zulassen und Wert duplizieren

Alle der List Klassen halten die Reihenfolge der Einfügung. Sie verwenden verschiedene Implementierungen basierend auf der Leistung und anderen Eigenschaften (z.B. ArrayList zur Geschwindigkeit des Zugriffs eines spezifischen Index, LinkedList für einfach die Aufrechterhaltung der Ordnung). Da es kein Schlüssel ist, werden Duplikate erlaubt.

Die Set Klassen halten nicht Auftrag. Sie können gegebenenfalls eine bestimmte Reihenfolge (wie bei SortedSet) aufzuzwingen, aber typischerweise eine Implementierung definiert, um basierend auf einigen Hash-Funktion (wie bei HashSet). Da Sets durch Schlüssel zugegriffen werden, werden Duplikate nicht erlaubt.

Bestellung ... eine Liste einen Auftrag hat, ein Satz nicht.

Ein paar bemerkenswert Unterschiede zwischen Listen- und Set in Java gegeben sind wie folgt:

1) fundamentaler Unterschied zwischen Listen- und Set in Java ermöglicht doppelte Elemente. Liste in Java erlaubt Duplikate während Set keine doppelte ermöglichen. Wenn Sie Einsatz in Set dupliziert wird es den älteren Wert ersetzen. Jede Implementierung von In Java wird nur enthält einzigartige Elemente.

2) Ein weiterer signifikanter Unterschied zwischen Listen- und Set in Java ist Ordnung. Liste ist eine geordnete Sammlung während Set eine ungeordnete Sammlung ist. Liste hält Einführungsreihenfolge der Elemente, jedes Element, das eingeführt wird, bevor auf niedrigeren Index als jedes Element gehen, die nach eingelegt wird. In Java keine Ordnung halten. Obwohl Set eine weitere Alternative bieten SortedSet genannt, die Set-Elemente in bestimmten Sortierreihenfolge von Vergleichbare und Vergleicher Methoden der Objekte gespeichert in Set definiert speichern kann.

3) Beliebte Umsetzung der Liste Schnittstelle in Java enthält Arraylist, Vektor und LinkedList. Während populäre Implementierung von Set-Schnittstelle umfasst HashSet, TreeSet und LinkedHashSet.

Es ist ziemlich klar, dass, wenn Sie benötigen Auftrag zu halten oder ein Objekt und Sie Sammlung Duplikate enthalten kann als Liste ein Weg zu gehen. Auf der anderen Seite, wenn Ihre Anforderung ohne Duplikate als Set einzigartige Sammlung zu halten ist, ist der Weg zu gehen.

Liste:

  1. erlaubt Duplikate.
  2. Bestellen in Elemente gruppieren. (Mit anderen Worten, die bestimmte order.No in aufsteigender Reihenfolge sortieren müssen)

Set:

  1. Nicht erlaubt Duplikate.
  2. Ungeordnete in Gruppierung Elementen. (Mit anderen Worten keine bestimmte order.It mit möglicherweise oder möglicherweise nicht in aufsteigender Reihenfolge)

Set<E> und List<E> werden sowohl Elemente vom Typ E zu speichern. Der Unterschied besteht darin, dass Set in ungeordneter Weise gespeichert ist, und erlaubt keine doppelten Werte. List wird in geordneter Weise speichern Elemente und es tut doppelte Werte erlauben.

Set Elemente nicht durch einen Index-Position zugegriffen werden kann, und List Elemente können mit einer Indexposition erreicht werden.

Hallo So viele Antworten bereits given..Let ich einige Punkte hinweisen, die bisher nicht erwähnt werden:

  • Die meisten der Liste Implementierungen (Arraylist, Vector) implementieren RandomAccess Schnittstelle, die eine Markierungsschnittstelle für einen schnelleren Zugriff ist. Keiner der Set-Implementierungen tun.
  • Liste verwendet eine spezielle Iterator namens ListIterator , die Iteration in beiden Richtungen unterstützt. Set verwendet Iterator, die nur 1 Weg Iteration
  • unterstützt
  • HashSet nimmt 5,5-mal mehr Speicher als Arraylist zum Speichern gleiche Anzahl von Elementen.

Hier ist ein klares Beispiel mit groovy. i erstellen einen Satz und eine Liste. dann versuche ich, in jeder Liste 20 zufällig generierten Wert zu speichern. der erzeugte Wert kann im Bereich 0 bis 5

sein
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

Das Ergebnis:

Zufallszahlen: 4, 1, 4, 0, 1, 2, 4, 0, 0, 3, 4, 3, 2, 0, 4, 0, 1, 3, 1, 3

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

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

Sie können sehen, dass der Unterschied ist, dass:

  • Set erlaubt keine doppelten Werte.
  • Liste erlauben doppelte Werte.

Wie die Antwort als SET keine doppelten Wert haben und List können. Natürlich bestellen ist eine andere Sache anders sie auseinander.

: Ein Set kann keine doppelten Elemente in seinen Sammlungen. es ist auch eine ungeordnete Sammlung. Um die Daten von Set zuzugreifen, ist es erforderlich, Iterator verwendet nur und indexbasierte abrufen ist nicht möglich für sie. Es ist vor allem bei Bedarf Einzigartigkeit Sammlung verwendet.

Liste: Eine Liste kann doppelte Elemente hat, mit dem natürlichen bestellt, wie es eingeführt wird. So kann es Daten über Index oder Iterator basieren abgerufen. Es ist weit verbreitet zu speichern Sammlung verwendet, die basierend auf dem Index zugreifen muss.

THEMA Name: Liste VS Set

Ich habe gerade durch Java wichtigste Thema genannt Collections Framework gegangen. Ich dachte, mein wenig Wissen über Sammlungen mit Ihnen zu teilen. List, Set, Map ist das wichtigste Thema davon. Lassen Sie uns also mit Liste und Set starten.

Differenz zwischen Listen- und Set:

  1. Liste ist eine Sammlung Klasse, die AbstractList-Klasse erweitert, wo als Set eine Sammlung Klasse ist die AbstractSet-Klasse erweitert, aber beide implementiert Collection-Schnittstelle.

  2. Liste Schnittstelle ermöglicht doppelte Werte (Elemente), während Set-Schnittstelle keine doppelten Werte zulässt. Im Fall eines doppelten Elemente in Set, ersetzt es ältere Werte.

  3. Liste Schnittstelle ermöglicht NULL Werte, bei denen als Set-Schnittstelle keine Nullwerte zulassen. Bei Verwendung von Null-Werte in Set gibt es NullPointerException.

  4. Liste Schnittstelle hält Auftrag. Das heißt, die Art, wie wir die Elemente in der Liste auf die gleiche Weise fügen wir es Iterator erhalten oder für-jeden Stil. Während Set Implementierungen müssen nicht Auftrag erhalten. (Obwohl SortedSet tut TreeSet verwenden und LinkedHashSet hält Auftrag).

  5. Liste Schnittstelle seine eigenen Methoden, während Set-Schnittstelle ihre eigene Methode nicht definiert haben, so Set nur Sammlung Interface-Methoden verwendet.

  6. Liste Schnittstelle hat eine Legacy-Klasse namens Vector während Set-Schnittstelle keine Legacy-Klasse hat

  7. Last but not least ... Die listIterator() Methode kann nur, um durch die Elemente aus der Liste Klassen verwendet werden, während wir iterator () Methode verwenden können, Set Klassenelemente zugreifen

Alles, was wir sonst noch hinzufügen? Bitte lassen Sie mich wissen.

Danke.

:

keine doppelten Werte haben Bestellung ist abhängig von Implementierung. Standardmäßig wird es nicht bestellt Kann nicht den Zugriff Index

Liste:

doppelte Werte haben Geordnet nach Standard Kann Zugriff Index

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top