[英]Merging recusrive Hashmap in java 8
我需要合並多個HashMap
s
地圖1:
{"41666":
{"oyo_id":"KSD900",
"contracted_rooms":null,
"status":"live"
},
"41667":
{"oyo_id":"JGH900",
"contracted_rooms":null,
"status":"live"
}
}
地圖2:
{"41666":
{"oyo_id":null,
"contracted_rooms":31,
"status":null
},
"41667":
{"oyo_id":null,
"contracted_rooms":3,
"status":null
}
}
預期結果
{"41666":
{"oyo_id":"KSD900",
"contracted_rooms":31,
"status":"live"
},
"41667":
{"oyo_id":"JGH900",
"contracted_rooms":3,
"status":"live"
}
}
我嘗試過的:
AssignedPropertiesResponse
:
@JsonProperty("oyo_id")
private String oyoId;
@JsonProperty("status")
private String status;
@JsonProperty("contractedRoomsCount")
private Double contracted_rooms_count;
分配的屬性響應列表:
HashMap<String, AssignedPropertiesResponse>
map1.putAll(map2);
但這是將 map2 的值覆蓋到 map2 中。
這是一個示例性實現:
map2.forEach((key, value) -> {
AssignedPropertiesResponse r = map1.get(key);
if(r != null) r.setContracted_rooms_count(value.getContracted_rooms_count());
});
PS:變量名在java中是用camelCase寫的。
創建合並函數
map2.merge(key, value, (v1, v2) -> new AssignedPropertiesResponse(v1.getOyoId(),v1.getStatus(),v2.getContractedRoomsCount())
然后您可以遍歷 map2 並將條目合並到 map1
map2.forEach(
(key, value) -> map1.merge(key, value, (v1, v2) -> new AssignedPropertiesResponse(v1.getOyoId(),v1.getStatus(),v2.getContractedRoomsCount())));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.