下面是HashMap中包含的值

statusName {Active=33, Renewals Completed=3, Application=15}

获取第一个Key(即Active)的Java代码

Object myKey = statusName.keySet().toArray()[0];

我们如何收集第一个键“值”(即33),我想在单独的变量中存储“键”和“值”。


当前回答

你可以试试这个:

 Map<String,String> map = new HashMap<>();
 Map.Entry<String,String> entry = map.entrySet().iterator().next();
 String key = entry.getKey();
 String value = entry.getValue();

请记住,HashMap并不保证插入顺序。使用LinkedHashMap来保持顺序的完整性。

Eg:

 Map<String,String> map = new LinkedHashMap<>();
 map.put("Active","33");
 map.put("Renewals Completed","3");
 map.put("Application","15");
 Map.Entry<String,String> entry = map.entrySet().iterator().next();
 String key= entry.getKey();
 String value=entry.getValue();
 System.out.println(key);
 System.out.println(value);

输出:

 Active
 33

更新: 在Java 8或更高版本中获取第一个密钥。

Optional<String> firstKey = map.keySet().stream().findFirst();
if (firstKey.isPresent()) {
    String key = firstKey.get();
}

其他回答

Java 8的方法,

String firstKey = map.keySet().stream().findFirst().get();

你也可以试试下面的方法:

Map.Entry<String, Integer> entry = myMap.firstEntry();
System.out.println("First Value = " + entry);

芬兰湾的科特林回答

获取第一个键,然后获取键的值。Kotlin有first()函数:

val list = HashMap<String, String>() // Dummy HashMap.

val keyFirstElement = list.keys.first() // Get key.

val valueOfElement = list.getValue(keyFirstElement) // Get Value.

请注意,您应该注意到您的逻辑流永远不能依赖于以某种顺序访问HashMap元素,简单地说,因为HashMap不是有序的集合,这不是它们的目的。(你可以在这篇文章中阅读更多关于有序和排序集合的信息)。

回到文章中,通过加载第一个元素键,你已经完成了一半的工作:

Object myKey = statusName.keySet().toArray()[0];

只需调用map.get(key)来获取相应的值:

Object myValue = statusName.get(myKey);

改进whoami的答案。因为findFirst()返回一个Optional,所以它是 检查是否有值是一个很好的做法。

 var optional = pair.keySet().stream().findFirst();

 if (!optional.isPresent()) {
    return;
 }

 var key = optional.get();

此外,一些人评论说寻找HashSet的第一个键是不可靠的。但有时我们有HashMap对;也就是说,在每个map中,我们有一个键和一个值。在这种情况下,快速找到这样一对中的第一个键是很方便的。