下面是HashMap中包含的值

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

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

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

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


当前回答

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

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

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

 var key = optional.get();

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

其他回答

记住,一般来说,插入顺序在映射中是不受尊重的。试试这个:

    /**
     * Get the first element of a map. A map doesn't guarantee the insertion order
     * @param map
     * @param <E>
     * @param <K>
     * @return
     */
    public static <E,K> K getFirstKeyValue(Map<E,K> map){
        K value = null;
        if(map != null && map.size() > 0){
            Map.Entry<E,K> entry =  map.entrySet().iterator().next();
            if(entry != null)
                value = entry.getValue();
        }
        return  value;
    }

我只在确定map.size() == 1时才使用它。

要获得“first”值:

map.values().toArray()[0]

获取"first"键的值:

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

注意:以上代码已经过测试并正常工作。

我说“first”是因为HashMap条目没有排序。

然而,LinkedHashMap迭代其条目的顺序与它们被插入的顺序相同——如果插入顺序很重要,您可以将其用于映射实现。

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

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

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

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

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

 var key = optional.get();

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

Java 8的方法,

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