Performance-Vergleich zwischen TreeSet und HashSet in Java
In diesem Tutorial werden alle Unterschiede und Gemeinsamkeiten zwischen
TreeSet und
HashSet. In der Tat ist dies eine sehr beliebte Frage in Java-Sammlungen, wie z. B.
ArrayList vs Vector und
HashTable vs
HashMap. Der wahrscheinlich wichtigste Unterschied ist die Leistung.
TreeSet vs HashSet
1) HashSet bietet eine konsistente Leistungszeit für grundlegende Operationen wie: hinzufügen, entfernen, enthält und Größe. HashSet ist schneller als TreeSet und es ist eine sehr gute Wahl, wenn Sie die Elemente nicht sortieren müssen, da HashSet hat kein Sortiersystem. TreeSet Garantierte Log(n)-Zeit für grundlegende Operationen (add, remove et enthält).
2)
HashSet garantiert nicht, dass Elemente sortiert werden.
TreeSet stellt sicher, dass Elemente in aufsteigender Reihenfolge sortiert oder durch die
interface Comparable oder was auch immer Sie im Konstruktor angeben, der durch die
Schnittstelle Comparator von Java.
3) Die Traversal-Performance hängt von der anfänglichen Kapazität und dem Lastfaktor von HashSet. TreeSet hat keine Parameter, die die Leistung des Kurses beeinflussen.
4) TreeSet bietet Methoden, die in HashSet : first(), last(), headSet() und tailSet().
5) HashSet verwendet die Methode equals() um zwei Objekte zu vergleichen und doppelte Objekte zu erkennen. TreeSet verwendet die compareTo(). equals() gibt true zurück, wenn beide Objekte gleich sind und compareTo() sollte null zurückgeben.
Die Ähnlichkeiten zwischen TreeSet und HashSet in Java
HashSet und
TreeSet haben viele Dinge, die gemeinsam sind, werfen wir einen Blick darauf:
1) Beide implementieren die Schnittstelle
java.util.Set, CE Das bedeutet, dass sie das Einfügen doppelter Elemente nicht zulassen.
2) Die beiden Implementierungen sind nicht synchronisiert. Sie können sie synchronisieren, indem Sie die Collections.synchronizedSet().
3) Wenn Sie einen sortierten Satz wünschen, ist es schneller, Elemente zu HashSet und konvertieren sie dann in TreeSet als eine TreeSet und fügen Sie Elemente hinzu.
Letztendlich können wir sagen, dass die Wahl der Verwendung ganz von Ihren Bedürfnissen abhängt.
Beispiel für HashSet:
import java.util.HashSet;
public class example {
public static void main(String[] args) {
HashSet< String> hset = neues HashSet< String> ();
hset.add("1");
hset.add("3");
hset.add("2");
hset.add("5");
for(String s: hset)
System.out.println(s);
}
}
Ergebnis:
3
2
1
5
TreeSet example:
import java.util.TreeSet;
public class example {
public static void main(String[] args) {
TreeSet< String> tset = neues TreeSet< String> ();
tset.add("1");
tset.add("3");
tset.add("2");
tset.add("5");
for(String s: tset)
System.out.println(s);
}
}
Ergebnis:
1
2
3
5
Referenzen:
Unterschied zwischen HashSet und TreeSet in JavaHashset vs Treeset