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
To get the value of the "first" key, you can use it
map.get(map.keySet().toArray()[0]);
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();
map.entrySet().stream().findFirst().get().getKey()
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();
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With