Como imprimir o conteúdo de um HashMap <String, String> em ordem crescente com base em seus valores?

eu tenho istoHashMap que eu preciso imprimir em ordem crescente de acordo com ovalores contido nele (não as chaves)

Mas a ordem em que eu imprimo é aparentemente aleatória.

Qual é a melhor maneira de imprimi-lo emordem de valor crescente?

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

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

Em outras palavras, o exemplo acima deve ser impresso como este:

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