How to get the first key of a hashmap?
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();
Comments
-
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