HashMap – 获取First Key的值

下面是包含在HashMap中的值

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

Java代码获取第一个密钥(即活动)

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

我们如何收集第一个关键的“价值”(即33),我想将“关键”和“价值”都存储在单独的variables。

你可以试试这个:

  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保持订单不变。

例如:

  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 

要获得“第一”价值:

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

要获得“第一个”键的价值:

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

注意:以上代码testing和工作。

我说“第一”,因为HashMap条目没有sorting。

但是,LinkedHashMap以与插入顺序相同的顺序迭代其条目 – 如果插入顺序很重要,则可以将其用于地图实现。

我们如何收集第一个关键“价值”(即33)

通过使用youMap.get(keyYouHave) ,你可以得到它的价值。

要将“Key”和“Value”都存储在单独的variables中

是的,你可以把它分配给一个variables。

等等………还没结束

如果你(业务逻辑)取决于插入和检索的顺序,你会看到奇怪的结果。 地图没有sorting,他们不会按顺序存储。 请注意这一事实。 使用一些替代品来保存您的订单。 可能是一个LinkedHashMap

Java 8的做法,

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

请注意,您应该注意,您的逻辑stream程决不能依赖于以某种顺序访问HashMap元素,因为HashMap并不是按顺序Collection的,而不是它们的目的。 (您可以在这篇文章中阅读更多关于订购和分拣集合的信息 )。

回到post,你已经做了一半的工作加载第一个元素键:

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

只需调用map.get(key)即可获得相应的值:

 Object myValue = statusName.get(myKey); 

请记住插入。 尝试这个 :

  /** * 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时才使用它。

您也可以尝试以下方法:

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