如何获取hashmap的第一个键?

Jür*_* K. 7 java hashmap

我有以下内容 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(); 
}
Run Code Online (Sandbox Code Playgroud)

谢谢

Sky*_*ker 8

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

map.get(map.keySet().toArray()[0]);
Run Code Online (Sandbox Code Playgroud)

在 Java8 中,

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

map.entrySet().stream().findFirst();
Run Code Online (Sandbox Code Playgroud)

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

map.entrySet().stream().findAny();
Run Code Online (Sandbox Code Playgroud)


Mar*_*inS 8

由于您的问题不是非常具体,您认为"第一把钥匙"我会列出几个选项.

只是键集中的第一个

String firstKey = map.keySet().iterator().next();
Run Code Online (Sandbox Code Playgroud)

但不知道提供给您的信息.

最小的钥匙

String firstKey = map.keySet().stream().min(String::compareTo).get();
Run Code Online (Sandbox Code Playgroud)

最小值的关键

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

第一个插入的密钥

这不适用于常规,HashMap因为它不保留顺序.请LinkedHashMap改用.

Map<String, Double> map = new LinkedHashMap<>();
String firstKey = map.keySet().iterator().next();
Run Code Online (Sandbox Code Playgroud)


kar*_*k r 5

如果您使用 Java 8,

map.entrySet().stream().findFirst().get().getKey()
Run Code Online (Sandbox Code Playgroud)