Red de conocimiento informático - Aprendizaje de programación - Java treeMap no puede obtener valores después de ordenar

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)?{

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)?{

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());

}

?