implementar - ¿Hay algún escenario en el que la implementación de Hashmap de Java7 sea preferible a la implementación de Java8?
recorrer hashmap java foreach (1)
A partir de Java8, nuestro querido HashMap
comporta un poco diferente. Si la clave implementa una interfaz comparable, cada hash contendría un árbol balanceado en lugar de una lista enlazada.
Esto reduce la complejidad de peor tiempo en caso de colisiones desde O(n)
a O(log(n))
, ver JEP180
¿Hay una situación en la que la actualización de Java7 a Java8 provoque una degradación del rendimiento del HashMap
como resultado?
Java8 usará árbol equilibrado en el número de entradas en el depósito en> N, donde N se elige empíricamente , y usa la lista una vez más si ese número es <K. esperaría un peor rendimiento si el número de entradas en el depósito cambia de manera que "treefyng / untreeifying" sucede a menudo. Eso podría suceder debido a la función hash específica.
Además, no estoy seguro de si los gastos generales para crear y consultar el árbol valen la pena para el pequeño N.