Nuestro equipo especializado luego de ciertos días de trabajo y de juntar de datos, dimos con la solución, nuestro deseo es que te sea de gran utilidad en tu proyecto.
Solución:
Sucede porque TreeMap
considera elementos iguales si a.compareTo(b) == 0
. Está documentado en JavaDoc para TreeMap (énfasis mío):
Tenga en cuenta que el orden mantenido por un mapa de árbol, como cualquier mapa ordenado, y si se proporciona o no un comparador explícito, debe ser consistente con
equals
si este mapa ordenado es para implementar correctamente la interfaz Mapa. (VerComparable
oComparator
para una definición precisa de consistente conequals
.) Esto es así porque la interfaz del mapa se define en términos de laequals
operación, pero un mapa ordenado realiza todo key comparaciones usando sucompareTo
(ocompare
) método, entonces dos keys que se consideran iguales por este método sondesde el punto de vista del mapa ordenado, igual. El comportamiento de un mapa ordenado está bien definido incluso si su orden no es consistente conequals
; simplemente no cumple con el contrato general de la interfaz del Mapa.
Su comparador no es consistente con iguales.
Si desea mantener los elementos de mayúsculas y minúsculas que no son iguales pero son iguales, coloque un segundo nivel de verificación en su comparador, para usar el orden que distingue entre mayúsculas y minúsculas:
public int compare(String o1, String o2)
int cmp = o1.compareToIgnoreCase(o2);
if (cmp != 0) return cmp;
return o1.compareTo(o2);
El Comparator
pasas a un TreeMap
determina no sólo el orden de los keys dentro de Map
también determina si dos keys se consideran idénticos (se consideran idénticos cuando compare()
devoluciones 0
).
Por lo tanto, en su TreeMap
“abc” y “ABC” se consideran idénticos keys. Map
s no permiten idéntico keysentonces el segundo valor Element2
sobrescribe el primer valor Element1
.
Debe asegurarse de que la igualdad de los elementos de ese mapa sea consistente con el comparador. Citando el comentario de la clase:
Tenga en cuenta que el orden mantenido por un mapa de árbol, como cualquier mapa ordenado, y si se proporciona o no un comparador explícito, debe ser consistente con iguales si este mapa ordenado debe implementar correctamente la interfaz.
Eres capaz de añadir valor a nuestra información cooperando tu veteranía en las reseñas.