Jochem Gruter
Jochem Gruter

Reputation: 2899

hashmap keyset automatically sorted

    HashMap<String, String[]> content = new HashMap<String, String[]>();

    content.put("Help", new String[]{"About"});
    content.put("View", new String[]{"Grid"});
    content.put("File", new String[]{"Import", "Export"});

    for(String key : content.keySet()){
        System.out.println(key);
    }

The above code logs:

View
Help
File

But why is this sorted?

Upvotes: 4

Views: 14835

Answers (2)

AllTooSir
AllTooSir

Reputation: 49372

The order in which you see the entries in the HashMap depends on the hash codes of the keys and order of the entries in the bucket I believe and it is implementation dependent, but don't rely on HashMap for ordering at all. Whereas LinkedHashMap and TreeMap do guarantee a certain order.

Upvotes: 4

Boris Mocialov
Boris Mocialov

Reputation: 3489

  1. HashMap makes absolutely no guarantees about the iteration order. It can (and will) even change completely when new elements are added.

  2. LinkedHashMap will iterate in the order in which the entries were put into the map

Source

Upvotes: 18

Related Questions