Interview-Fragenbank (2) 1: Hashmap1.7 oder 1.8? Optimierungspunkt? Warum verwandelt sich der rot-schwarze Baum in 8? Warum degenerieren?

Der Unterschied zwischen HashMap 1.7 und 1.8

Die Hauptunterschiede zwischen HashMap 1.7 und 1.8 sind wie folgt:

  • Speicherstruktur : Version 1.7 von HashMap verwendet die Struktur von Array + verknüpfter Liste zum Speichern von Daten, während Version 1.8 von HashMap die Struktur von Array + verknüpfter Liste + rot-schwarzem Baum zum Speichern von Daten verwendet.
  • Erweiterungsmechanismus : Die 1.7-Version von HashMap wird erweitert, wenn die Kapazität nicht ausreicht, und die erweiterte Kapazität beträgt das Zweifache der ursprünglichen; während die 1.8-Version von HashMap erweitert wird, wenn die Kapazität nicht ausreicht, und die erweiterte Kapazität das 1,5-fache beträgt Original.
  • Anfangskapazität : Die Anfangskapazität von Version 1.7 HashMap beträgt 16, während die Anfangskapazität von Version 1.8 HashMap 16 oder 32 beträgt, abhängig von der Größe der HashMap.
  • Ladefaktor : Der Ladefaktor der Version 1.7 HashMap beträgt 0,75, während der Ladefaktor der Version 1.8 HashMap 0,75 oder 0,6 beträgt, abhängig von der Größe der HashMap.

Optimierungspunkte von HashMap 1.8

HashMap 1.8 verfügt über die folgenden Optimierungen basierend auf 1.7:

  • Rot-Schwarz-Baum verwenden : Wenn die Länge der verknüpften Liste den Schwellenwert 8 überschreitet, wird die verknüpfte Liste in einen Rot-Schwarz-Baum umgewandelt, wodurch die Sucheffizienz verbessert wird.
  • Anfangskapazität : Passen Sie die Anfangskapazität dynamisch an die Größe der HashMap an und reduzieren Sie so die Anzahl der Erweiterungen.
  • Ladefaktor : Passen Sie den Ladefaktor dynamisch an die Größe der HashMap an, um die Leistung zu verbessern.

<

Guess you like

Origin blog.csdn.net/cq20110310/article/details/133293344