以下是HashMap中包含的值
statusName {Active=33, Renewals Completed=3, Application=15}
Java代码获取第一个密钥(即活动)
Object myKey = statusName.keySet().toArray()[0];
我们如何收集第一个键“值”(即33),我想将“键”和“值”都存储在单独的变量中。
HashMap
吗?中没有特定顺序?如果完全修改它,则可能会以完全不同的顺序获得结果。
以下是HashMap中包含的值
statusName {Active=33, Renewals Completed=3, Application=15}
Java代码获取第一个密钥(即活动)
Object myKey = statusName.keySet().toArray()[0];
我们如何收集第一个键“值”(即33),我想将“键”和“值”都存储在单独的变量中。
HashMap
吗?中没有特定顺序?如果完全修改它,则可能会以完全不同的顺序获得结果。
Answers:
您可以尝试以下方法:
Map<String,String> map = new HashMap<>();
Map.Entry<String,String> entry = map.entrySet().iterator().next();
String key = entry.getKey();
String value = entry.getValue();
请记住,HashMap
不保证插入顺序。使用a 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
com.google.gson.internal.LinkedTreeMap cannot be cast to...
...我声明的课而不是String
在正确的位置...我无法在线找到答案..help
Gson
将值对象转换为a String
然后将其解析回我的类类型来解决它。它很丑陋,但我真的找不到其他解决方案的任何其他解决方案,而这种解决方案很容易用其他语言完成(我现在学习Java)
您也可以尝试使用此方法来获取整个第一个条目,
Map.Entry<String, String> entry = map.entrySet().stream().findFirst().get();
String key = entry.getKey();
String value = entry.getValue();
这仅获得第一个条目的密钥,
String key = map.entrySet().stream().map(Map.Entry::getKey).findFirst().get();
// or better
String key = map.keySet().stream().findFirst().get();
这仅获得第一个条目的值,
String value = map.entrySet().stream().map(Map.Entry::getValue).findFirst().get();
// or better
String value = map.values().stream().findFirst().get();
此外,如果您知道自己在做什么,并且希望获得地图的第二项(与第三项相同),则应尝试这样做,
Map.Entry<String, String> entry = map.entrySet().stream().skip(1).findFirst().get();
String key = map.keySet().stream().skip(1).findFirst().get();
String value = map.values().stream().skip(1).findFirst().get();
我们如何收集第一个键“值”(即33)
通过使用youMap.get(keyYouHave)
,您可以获取其价值。
想要将“键”和“值”都存储在单独的变量中
是的,您可以将其分配给变量。
等待.........还没有结束。
如果您(业务逻辑)取决于插入和检索的顺序,则会看到奇怪的结果。未订购地图,因此不会将其存储在订单中。请注意这一事实。使用其他方法来保留您的订单。大概一个LinkedHashMap
请记住,一般来讲,地图中不遵循插入顺序。试试这个 :
/**
* 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);
HashMap
条目是无序的,因此只要修改地图,“ first”可能会更改?