下面是值包含HashMap中HashMap的 - 讓第一個關鍵值
statusName {Active=33, Renewals Completed=3, Application=15}
Java代碼來獲取第一密鑰(即激活)
Object myKey = statusName.keySet().toArray()[0];
我們如何收集的第一個關鍵「值「(即33),我想將」Key「和」Value「都存儲在單獨的變量中。
下面是值包含HashMap中HashMap的 - 讓第一個關鍵值
statusName {Active=33, Renewals Completed=3, Application=15}
Java代碼來獲取第一密鑰(即激活)
Object myKey = statusName.keySet().toArray()[0];
我們如何收集的第一個關鍵「值「(即33),我想將」Key「和」Value「都存儲在單獨的變量中。
你可以試試這個:
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
我知道這是一個非常古老的答案..這是工作hashmaps鍵和價值作爲字符串。但是當嘗試使用與對象相同的值來獲取投射錯誤時:'com.google.gson.internal.LinkedTreeMap無法轉換爲...'...我在正確的位置使用了「String」而不是「String」 ...無法在網上找到答案..幫助 – 2017-11-21 11:03:06
@darthydarth你應該根據你的上下文使用正確的類型。 – 2017-11-21 11:28:33
首先感謝您的回答!沒想到......第二我發現,在運行時沒有保存的泛型沒有問題。最終我通過使用'Gson'將值對象轉換爲String來破解它,然後將其解析爲我的類類型。它的醜陋,但我真的無法找到任何其他解決方案很容易在其他語言(我現在正在學習Java) – 2017-11-21 11:38:06
how can we collect the first Key "Value" (i.e 33)
使用youMap.get(keyYouHave)
,你可以得到它的價值。
want to store the Both "Key" and "Value" in separate variable
是的,你可以分配給一個變量。
等待.........它沒有結束。
如果您(業務邏輯)取決於插入和檢索的順序,您將看到奇怪的結果。地圖沒有排序,他們不會按順序存儲。請注意這一事實。使用一些替代品來保存您的訂單。可能是一個LinkedHashMap
獲得 「第一」 值:
map.values().toArray()[0]
獲得 「第一」 鍵的值:
map.get(map.keySet().toArray()[0])
注:以上代碼測試和工程。
我說「第一」,因爲HashMap條目沒有排序。
但是,LinkedHashMap以與插入順序相同的順序迭代它的條目 - 如果插入順序很重要,可以將其用於地圖實現。
請注意,你要注意,你的邏輯流絕不能依賴於訪問以某種順序的HashMap
元素,簡單地說,因爲HashMap
s的不排序Collection
s以及是不是他們的目的是做。 (您可以在this post中閱讀更多關於訂購和分揀集合的信息)。
Object myKey = statusName.keySet().toArray()[0];
只需撥打map.get(key)
來獲取各自的值:
Object myValue = statusName.get(myKey);
您還可以試試下面
回到崗位,你已經通過加載的第一個元素鍵做了一半的工作:
Map.Entry<String, Integer> entry = myMap.firstEntry();
System.out.println("First Value = " + entry);
的Java做的8路,
String firstKey = map.keySet().stream().findFirst().get();
記住插入順序沒有地圖尊重一般來說。試試這個:
/**
* 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
。
你確實意識到'HashMap'條目是無序的,所以每當你修改地圖時,「第一個」都會改變。 – NPE 2014-10-07 06:57:28
你知道'HashMap'中沒有特定的順序嗎?如果你修改它,你可能會得到完全不同的結果。 – 2014-10-07 06:57:38
不,訂單不能保證運行,但在同一個線程內,可以依靠訂單。 – hd1 2014-10-07 06:58:24