Was ist der Unterschied zwischen Set und Mailingliste?
Frage
Was ist der grundlegende Unterschied zwischen dem Set<E>
und List<E>
Schnittstellen?
Lösung
List
ist eine geordnete Folge von Elementen während Set
eine deutliche Liste von Elementen, die ungeordnet ist (danke, Quinn Taylor ).
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.
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
- ist eine geordnete Gruppierung von Elementen.
- Liste ist die Sammlung von Elementen mit Dubletten verwendet.
- Es werden neue Methoden innerhalb Liste definiert Schnittstelle.
- ist eine ungeordnete Gruppierung von Elementen.
- auf Sammlung von Elementen ohne Duplikate benutzt.
- Es werden keine neue Methoden definiert innerhalb Set-Schnittstelle, so dass wir nur mit Set-Subklassen Collection-Schnittstelle Methoden verwenden.
Liste:
List
s erlaubt im Allgemeinen doppelte Objekte.
List
s muss daher durch Index zugänglich bestellt werden und sind.
Implementierungsklassen umfassen: ArrayList
, LinkedList
, Vector
Set:
Set
s 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 Set
s 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:
- erlaubt Duplikate.
- Bestellen in Elemente gruppieren. (Mit anderen Worten, die bestimmte order.No in aufsteigender Reihenfolge sortieren müssen)
Set:
- Nicht erlaubt Duplikate.
- 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
seins = [] 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:
-
Liste ist eine Sammlung Klasse, die
AbstractList
-Klasse erweitert, wo als Set eine Sammlung Klasse ist dieAbstractSet
-Klasse erweitert, aber beide implementiert Collection-Schnittstelle. -
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.
-
Liste Schnittstelle ermöglicht NULL Werte, bei denen als Set-Schnittstelle keine Nullwerte zulassen. Bei Verwendung von Null-Werte in Set gibt es
NullPointerException
. -
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. (ObwohlSortedSet
tutTreeSet
verwenden undLinkedHashSet
hält Auftrag). -
Liste Schnittstelle seine eigenen Methoden, während Set-Schnittstelle ihre eigene Methode nicht definiert haben, so Set nur Sammlung Interface-Methoden verwendet.
-
Liste Schnittstelle hat eine Legacy-Klasse namens
Vector
während Set-Schnittstelle keine Legacy-Klasse hat -
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