Red de conocimiento informático - Programación de la red - Si el recorrido de HashMap está en orden y si fastJson.toJson() puede garantizar que el orden de los resultados sea coherente.

Si el recorrido de HashMap está en orden y si fastJson.toJson() puede garantizar que el orden de los resultados sea coherente.

En primer lugar, el resultado: la coherencia no está garantizada.

Hashmap guarda datos en función de una matriz más una estructura de lista vinculada. Al atravesar, básicamente se puede considerar como atravesar hashCode.

Pero hay dos puntos especiales:

①: Si el número de depósitos de hash (menos de 16) especificados al inicializar el mapa de hash es inconsistente, entonces (n-1); la matriz obtenida mediante hash es Las marcas son inconsistentes. El orden de recorrido cambiará.

②: Se produce un conflicto de hash y la longitud de la lista de conflictos es inferior a 9. La capacidad del depósito de hash es mayor que 64 en este momento, se almacena en una lista vinculada y esta parte de los datos se puede recorrer en el orden de inserción. (Por verificar)

Ejemplo 1:

HashMap map 1 = new HashMap lt;

map1.put("123 "," AAA ");

map1.put("23456", "BBB");

System. out . println("Recorrido en bucle del mapa 1");

Para (Fig. entrada entrada: mapa 1 . conjunto de entrada()){

system out .

}

HashMap map2 = nuevo HashMap lt gt(mapa 1 . tamaño());

map2.put("123 ", " AAA ");

map2.put("23456 ", " BBB ");

System. out . println("Recorrido en bucle del mapa 2");

For (Fig. Entrada: map2.entrySet()) {

system out . ());

}

Volver a la segunda pregunta: fastJson.toJson()? Según los dos peligros ocultos anteriores, ¿no se garantiza el orden? JSONObject atraviesa el mapa según Map.entrySet (). EntrySet recorre la matriz y la lista vinculada a través del nodo del depósito 0. No se puede garantizar que los datos en este momento sean completamente consistentes.