如何获取哈希图的第一个键?

新手上路,请多包涵

我有以下 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();
}

谢谢

原文由 Jürgen K. 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 427
2 个回答

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

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

在Java8中,

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

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

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

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

原文由 SkyWalker 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

只是密钥集中的第一个

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();

第一个插入的键

这不适用于常规 HashMap 因为它不保留顺序。使用 LinkedHashMap 代替。

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

原文由 MartinS 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题