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);