¿Cómo imprimir el contenido de un HashMap <String, String> en orden ascendente en función de sus valores?

tengo estoHashMap que necesito imprimir en orden ascendente de acuerdo con elvalores contenido en él (no las llaves)

Pero el orden cuando lo imprimo es aparentemente aleatorio.

¿Cuál es la mejor manera de imprimirlo enorden de valor ascendente?

Map<String, String> codes = new HashMap<String, String>();

codes.put("A1", "Aania");
codes.put("X1", "Abatha");
codes.put("C1", "Acathan");
codes.put("S1", "Adreenas");

En otras palabras, el ejemplo anterior debería imprimirse así:

A1, Aania
X1, Abatha
C1, Acathan
S1, Adreenas

Respuestas a la pregunta(13)

Su respuesta a la pregunta