How to iterate a HashMap using the natural entrySet() order?

For anyone finding this question in 2020 and beyond...
Now that we have streams, you can do something like this:

map.entrySet()
  .stream()
  .sorted(Map.Entry.comparingByKey())
  .forEach(System.out::println);

Use TreeMap:

A Red-Black tree based NavigableMap implementation. The map is sorted according to the natural ordering of its keys, or by a Comparator provided at map creation time, depending on which constructor is used...


No, your map does not hold elements in alphabetical order. You may have .put(..) then in that order, but the map does not have a defined iteration order.

Others suggest using SortedSet, but you can also use LinkedHashMap. It guarantees iteration order:

This implementation (LinkedHashMap) spares its clients from the unspecified, generally chaotic ordering provided by HashMap (and Hashtable), without incurring the increased cost associated with TreeMap