Ab Java8 verhält sich unser geliebtes HashMap
ein wenig anders.
Wenn der Schlüssel eine vergleichbare Schnittstelle implementiert, würde jeder Hash eine ausgeglichene Struktur anstelle einer verknüpften Liste enthalten.
Dies reduziert die Komplexität der schlimmsten Zeit im Falle von Kollisionen von O(n)
auf O(log(n))
, siehe JEP180
Gibt es eine Situation, in der ein Upgrade von Java7 auf Java8 zu einer Verschlechterung der Leistung von HashMap
führen würde?
Java8 verwendet einen ausgeglichenen Baum in der Anzahl der Einträge im Bucket in & gt; N, wobei N ausgewählt ist empirisch , und benutze die Liste noch einmal, wenn diese Zahl & lt; K. Ich würde eine schlechtere Leistung erwarten, wenn sich die Anzahl der Einträge im Bucket so ändert, dass "treefyng / unretifying" häufig auftritt. Dies kann aufgrund einer bestimmten Hash-Funktion passieren.
Ich bin mir auch nicht sicher, ob der Overhead für das Erstellen und Abfragen von Bäumen den Gewinn für kleine N wert ist.
Tags und Links java performance hashmap