我有以下内容 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)
谢谢
要获取“第一个”键的值,您可以使用它
map.get(map.keySet().toArray()[0]);
Run Code Online (Sandbox Code Playgroud)
您可以使用流。对于TreeMap/LinkedHashMap,排序很重要,你可以写
map.entrySet().stream().findFirst();
Run Code Online (Sandbox Code Playgroud)
对于HashMap,没有顺序,因此findAny()可能会在不同的调用中返回不同的结果
map.entrySet().stream().findAny();
Run Code Online (Sandbox Code Playgroud)
由于您的问题不是非常具体,您认为"第一把钥匙"我会列出几个选项.
只是键集中的第一个
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)
map.entrySet().stream().findFirst().get().getKey()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22616 次 |
| 最近记录: |