Im Wesentlichen sind sowohl List als auch Set Schnittstellen und erben die Collection-Schnittstelle. Die ArrayList und HashSet, die wir häufig verwenden, erben die List- bzw. Set-Schnittstellen. Aufgrund der Verwendung von Generika kann der tatsächliche Typ für die Verwendung in tatsächlichen Anwendungen angegeben werden. Normalerweise verwenden wir sie zum Speichern von Objekten. Sie alle bieten Schnittstellen zum Einfügen, Löschen und Suchen und unterstützen die Verwendung von Iterator. Was ist also der Unterschied zwischen List und Set und wie sollten sie bei der Verwendung unterschieden werden?
Der Unterschied zwischen List und Set
(1) Ein sehr wichtiger Unterschied zwischen List und Set besteht darin, ob doppelte Elemente vorhanden sein dürfen im Set Doppelte Elemente sind nicht zulässig und werden ersetzt, auch wenn das gleiche Element eingefügt wird. Ich habe überprüft, dass die gleichen Elemente in ArrayList bzw. HashSet eingefügt wurden:
HashSet<String> hset = new HashSet<String>(); ArrayList<String> arrlst = new ArrayList<String>(); hset.add("hello"); hset.add("hello"); arrlst.add("hello"); arrlst.add("hello"); System.out.println("hset size: "+hset.size()+" toString: "+hset.toString()); System.out.println("arrlst size: "+arrlst.size()+" toString: "+arrlst.toString());
Laufergebnisse:
PS: Wenn Sie sich den JDK-Quellcode ansehen, Sie sehen die Implementierung von HashSet. Dies erfolgt über HashMap.
Empfehlung für Java-Lernvideos: Erste Schritte mit Java
(2) Ein weiterer sehr wichtiger Unterschied zwischen List und Set hängt mit der Reihenfolge zusammen, in der Elemente gespeichert werden. List ist eine geordnete Sammlung, während Set eine ungeordnete Sammlung ist. Die Liste behält die Reihenfolge bei, in der Elemente eingefügt werden, d. h. der Index der zuvor eingefügten Elemente ist kleiner als der Index der später eingefügten Elemente. Set behält die Einfügereihenfolge nicht bei. Überprüfen wir auch:
HashSet<String> hset = new HashSet<String>(); ArrayList<String> arrlst = new ArrayList<String>(); hset.add("1"); hset.add("3"); hset.add("2"); arrlst.add("1"); arrlst.add("3"); arrlst.add("2"); System.out.println("hset size: "+hset.size()+" toString: "+hset.toString()); System.out.println("arrlst size: "+arrlst.size()+" toString: "+arrlst.toString());
Laufergebnisse:
PS: ArrayList verwendet Objektarrays zum Speichern von Objekten und fügt jedes Mal neue ein Das Objekt wird in size eingefügt; wie bereits erwähnt, wird das gespeicherte Objekt als Schlüssel von HashMap verwendet. Natürlich kann SortedSet (das die Set-Schnittstelle erbt) Elemente in einer bestimmten Sortierweise speichern.
(3) Auf die Liste kann über Indizes zugegriffen werden, auf Set jedoch nicht.
Zu den allgemeinen Implementierungsklassen der List-Schnittstelle gehören ArrayList, Vector und LinkedList, während zu den allgemeinen Implementierungsklassen der Set-Schnittstelle HashSet, TreeSet und LinkedHashSet gehören.
Weitere Artikelempfehlungen zum Thema Java: Java-Einführungs-Tutorial
Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen Set- und Listenschnittstellen in der Java Collection. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!