如何获取哈希映射的第一个密钥?

2022-09-04 07:44:40

我有以下HashMap<String, Double> map = new HashMap<String, Double>();

我怎么能得到第一个键而不像这样迭代它:

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

谢谢


答案 1

要获取“第一个”键的值,可以使用它

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

在Java8中,

您可以使用流。对于 TreeMap/LinkedHashMap,其中排序很重要,您可以编写

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

对于HashMap,没有顺序,因此可能会在不同的调用上返回不同的结果findAny()

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

答案 2

由于您的问题对于您认为的“第一键”不是很具体,因此我只列出几个选项。

只是密钥集中的第一个

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

但不知道这为您提供了什么信息。

最小的钥匙

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

最小值的键

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

第一个插入的键

这不适用于常规,因为它不保留排序。请改用 a。HashMapLinkedHashMap

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