java collections concurrency linked-list hashmap

java - En un mapa hash, la adición de un nuevo elemento a la lista vinculada interna de un depósito siempre está al final. ¿Por qué?



collections concurrency (1)

Porque no puede simplemente agregar el elemento cuando el código hash es el mismo. Cuando el código hash es el mismo, debe verificar equals en la clave en cada nodo de la lista vinculada. Por lo tanto, debe recorrer toda la lista vinculada para verificar si hay alguna clave igual ya presente.

En un mapa hash, cuando tenemos los mismos códigos hash, insertamos objetos como una lista vinculada que luego se convierte en TreeNode. Cada nuevo objeto con el mismo código hash se agrega a la última de la lista vinculada adjunta. Entonces, mi pregunta aquí es ¿por qué no agregamos el nuevo elemento como primer elemento de la lista vinculada interna adjunta al cubo? ¿Por qué atravesamos hasta el último elemento y luego agregamos el nuevo elemento?

Tiempo empleado por la lista vinculada para:

Insertar nuevo elemento al inicio = O (1)

Insertar nuevo elemento al final = O (n)

Una respuesta probable podría ser, ya que el hashmap no es seguro para subprocesos, la lectura y escritura simultánea de elementos, desde una sola posición puede conducir a anomalías. Por ejemplo, hay dos transacciones:

T1: agregar un nuevo objeto al mapa que ya tiene un código hash presente en el mapa hash.

T2: lectura de un nuevo objeto del mapa, de nuevo con un código hash ya presente en el mapa hash.

Cuando estas dos transacciones tienen lugar simultáneamente, y comenzamos a agregar los nuevos elementos al inicio en lugar del último lugar, puede haber una ligera probabilidad de que la operación de lectura se vea afectada, debido a los cambios que se realizan en la primera posición.

Si alguien puede tener una mejor idea de esto, por favor comente.