java 获取{“M03-1-Z11-L2”:{“2024-09-12”:“1000”},“M03-1-Z11-L3”:{“2024-09-12”:“1000”,“2024-09-13”:“1000”}}获取最后一层value的和
时间: 2024-10-23 11:09:47 浏览: 11
在Java中,如果你有一个类似于JSON的对象,你可以通过递归或者使用内置的`Map`和`Optional`类来获取最后一层的值之和。假设你已经将这个字符串解析成了一个嵌套的`Map`结构,例如:
```java
Map<String, Map<String, String>> nestedMap = new HashMap<>();
nestedMap.put("M03-1-Z11-L2", new HashMap<>());
nestedMap.get("M03-1-Z11-L2").put("2024-09-12", "1000");
nestedMap.put("M03-1-Z11-L3", new HashMap<>());
nestedMap.get("M03-1-Z11-L3").put("2024-09-12", "1000");
nestedMap.get("M03-1-Z11-L3").put("2024-09-13", "1000");
```
你可以编写一个函数来查找并计算最后一个`Map`(这里指日期键)的所有值之和:
```java
import java.util.Map;
import java.util.Optional;
public int sumLastLevelValues(Map<String, Map<String, String>> map) {
Optional<Map<String, String>> lastLevel = map.values().stream()
.filter(map2 -> !map2.isEmpty()) // 避免空map
.reduce((a, b) -> a.isEmpty() ? b : a); // 选择最后一个非空的
if (lastLevel.isPresent()) {
return lastLevel.get().values().stream()
.mapToInt(Integer::parseInt) // 将String转换为int再求和
.sum();
} else {
return 0; // 如果所有都是空的,返回0
}
}
// 调用该函数获取总和
int totalSum = sumLastLevelValues(nestedMap);
System.out.println(totalSum); // 输出:2000
```
阅读全文