我有这种格式的地图,
let data = JSON.parse(localStorage.getItem("the-data")) || {/*...default structure here...*/};
// ...modify the various parts of `data`...
localStorage.setItem("the-data", JSON.stringify(data));
我的目的是做HashMap<String, Object> map = {"RequestsServed":{"2019-06-28T00:00:00Z":0.0},"PullRequests":{"2019-06-28T00:00:00Z":0.0}}
并获得一张
map.get("RequestsServed")
,与其中的键,值对无关。
我尝试使用,
{"2019-06-28T00:00:00Z":0.0}
,失败了。请帮忙。谢谢
答案 0 :(得分:1)
我真是愚蠢地问了这个问题...
map.get(“ RequestsServed”)会给我一个LinkedTreeMap。我只需要将其解析为我选择的HashMap。
将map.get(“ RequestsServed”)序列化为json并将结果值解析为HashMap将轻松为我提供所需的结果。
谢谢大家的时间。
答案 1 :(得分:0)
我已经编写了一个用于测试目的的虚拟类:
public class TempObject {
private String date;
private Double value;
public TempObject(String date, Double value) {
this.date = date;
this.value = value;
}
public String getDate() {
return date;
}
public Double getValue() {
return value;
}
}
这是您的解决方案:
// Initializing the Map (I'm using LinkedHashMap here for a reason)
Map<String, Object> map = new LinkedHashMap<>();
map.put("RequestsServed", new TempObject("2019-06-28T00:00:00Z", 0.0));
map.put("PullRequests", new TempObject("2019-06-28T00:00:00Z", 0.1));
// Using Collectors.toMap() with mergeFunction (to handle duplicate keys)
Map<String, Object> result = map.values().stream().map(object -> (TempObject) object).collect(Collectors.toMap(TempObject::getDate, TempObject::getValue, (existingValue, newValue) -> newValue));
System.out.println(result); // printing the value of result map: {2019-06-28T00:00:00Z=0.1}
您还可以将此字符串值解析为LocalDateTime
。