How to get the first key of a hashmap?

36,845

Solution 1

To get the value of the "first" key, you can use it

map.get(map.keySet().toArray()[0]);

In Java8,

You can use stream. For TreeMap/LinkedHashMap, where ordering is significant, you can write

map.entrySet().stream().findFirst();

For HashMap, there is no order, so findAny() might return a different result on different calls

map.entrySet().stream().findAny();

Solution 2

Since your question is not very specific about what you consider the "first key" I will just list a few options.

Just the first one in the key set

String firstKey = map.keySet().iterator().next();

But no idea what information that provides you.

The smallest key

String firstKey = map.keySet().stream().min(String::compareTo).get();

The key of the smallest value

String firstKey = map.entrySet().stream().min((a,b) -> a.getValue().compareTo(b.getValue())).get().getKey();

The first inserted key

This does not work with a regular HashMap because it does not preserve the ordering. Use a LinkedHashMap instead.

Map<String, Double> map = new LinkedHashMap<>();
String firstKey = map.keySet().iterator().next();

Solution 3

if you use Java 8,

map.entrySet().stream().findFirst().get().getKey()

Solution 4

Map<String, Double> map=new HashMap<>();
Map.Entry<String, Double> entry=map.entrySet().iterator().next();
 String key= entry.getKey();

But HashMap doesn't maintain insertion order. You can use LinkedHashMap instead of HashMap.

Solution 5

Just call it.next() once, be sure the iterator is just in the first position.

Iterator it = map.entrySet().iterator();
Map.Entry firstEntry = (Map.Entry)it.next();
Share:
36,845
Jürgen K.
Author by

Jürgen K.

Computer scientist

Updated on July 09, 2022

Comments

  • Jürgen K.
    Jürgen K. almost 2 years

    I have the following HashMap<String, Double> map = new HashMap<String, Double>();

    How can i get the first key without iterating over it like this:

    Iterator it = map.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry pair = (Map.Entry)it.next();
        System.out.println(pair.getKey() + " = " + pair.getValue());
        it.remove(); 
    }
    

    Thanks