Bevor wir uns mit den Unterschieden befassen, schauen wir uns kurz an, was HashSet und TreeSet sind.
Ein HashSet ist eine Sammlung, die eine Hash-Tabelle zur Speicherung verwendet. Es implementiert die Set-Schnittstelle, was bedeutet, dass es keine doppelten Elemente zulässt. Die Elemente sind ungeordnet und unsortiert, wodurch sich HashSet für Szenarien eignet, in denen Sie schnell suchen, einfügen und löschen müssen.
Ein TreeSet ist eine Sammlung, die die NavigableSet-Schnittstelle implementiert. Für die Speicherung wird ein Rot-Schwarz-Baum verwendet, was bedeutet, dass die Elemente sortiert und geordnet gespeichert werden. TreeSet lässt ebenfalls keine doppelten Elemente zu, ist jedoch ideal für Situationen, in denen Sie eine natürliche Reihenfolge der Elemente beibehalten müssen.
HashSet: Verwendet intern eine Hash-Tabelle. Der Hash-Code jedes Elements wird verwendet, um seinen Speicherort zu bestimmen. Wenn zwei Elemente denselben Hash-Code haben, wird eine Technik namens Chaining oder Probing verwendet, um Kollisionen zu behandeln.
Beispielcode:
Set<String> hashSet = new HashSet<>(); hashSet.add("Apple"); hashSet.add("Banana"); hashSet.add("Mango");
TreeSet : Verwendet intern einen Rot-Schwarz-Baum. Jedes Element wird entsprechend seiner natürlichen Reihenfolge oder einem bereitgestellten Komparator platziert, um sicherzustellen, dass der Baum im Gleichgewicht bleibt.
Beispielcode:
Set<String> treeSet = new TreeSet<>(); treeSet.add("Apple"); treeSet.add("Banana"); treeSet.add("Mango");
Sowohl HashSet als auch TreeSet erlauben keine doppelten Elemente. Die Methode zur Erkennung von Duplikaten unterscheidet sich jedoch. HashSet verwendet die Methoden hashCode () und equals (), während TreeSet die Methoden compareTo () oder einen Comparator.
2.7 SpeichernutzungHashSet vs. LinkedHashSet: Während HashSet keine Reihenfolge garantiert, behält LinkedHashSet die Einfügungsreihenfolge bei. TreeSet hingegen sortiert Elemente auf natürliche Weise oder nach einem benutzerdefinierten Komparator.
2.9 Anwendungsfälle
// HashSet Example Set<String> hashSet = new HashSet<>(); hashSet.add("Zebra"); hashSet.add("Apple"); hashSet.add("Mango"); System.out.println("HashSet: " + hashSet); // Output may be unordered, e.g., [Apple, Mango, Zebra] // TreeSet Example Set<String> treeSet = new TreeSet<>(); treeSet.add("Zebra"); treeSet.add("Apple"); treeSet.add("Mango"); System.out.println("TreeSet: " + treeSet); // Output will be sorted, e.g., [Apple, Mango, Zebra]
Weitere Beiträge finden Sie unter: Die 10 wichtigsten Unterschiede zwischen HashSet und TreeSet in Java
Das obige ist der detaillierte Inhalt vonDie wichtigsten Unterschiede zwischen HashSet und TreeSet in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!