Java treeMap no puede obtener valores después de ordenar
Quiere ordenar por el valor del mapa. En primer lugar, su interfaz de comparación tiene una implementación incorrecta. Generalmente, se implementan 2 ramas, lo que significa que el valor comparado debe devolver 3 situaciones. - 1, 0, 1. ¿Por qué? Si no hace esto, se producirán muchos errores. Eche un vistazo al código fuente del mapa de árbol al comparar usando su propia excusa de comparación, habrá while?(p?! =?null)?{ p>
int?cmp?=?cpr.compare(k,?p.key);
if?(cmp?lt;?0)
p?= ?p.left;
else?if?(cmp?gt;?0)
p?=?p.right
else
return ?p;
}
Pero su propia implementación no tiene el caso else, que es el caso de cmp=0, por lo que nunca obtendrá el valor. de la llave.
En su método comapre, hay dos formas de resolver su problema:
public?int?compare(String?a, ?String?b)?{ p>
if(base.get(a)?{
return?-1;
} else?if(base.get(a)?lt;?base .get( b)){
retorno?1;
}else{
retorno?0;
}
}
Alternativamente, en lugar de usar el método get, puede usar Setlt;Entrylt.String,?Doublegt;gt;?set?=?sorted_map.entrySet();
Para (Entrylt; String, ?Doublegt; ?i?: ?set)?{
System.out.println(i.getValue());
}
?