使用java,将Map<Integer, Map<String, Object>>这个结构中的Object数据全部相加求和
时间: 2024-09-15 20:03:31 浏览: 41
在Java中,如果你有一个`Map<Integer, Map<String, Object>>`的嵌套Map结构,其中包含数值类型的数据(比如Integer或者Number的子类),你可以通过遍历整个结构并逐级累加来计算所有`Object`类型的值的总和。由于Java的泛型无法保证`Object`内部的具体类型,你需要对每个值进行强制转换,并处理可能出现的非数字类型异常。
下面是一个简单的示例,假设所有的`Object`都是可以进行数学加法的数字:
```java
import java.util.Map;
import java.util.HashMap;
public class SumCalculator {
public static long sumOfValues(Map<Integer, Map<String, Object>> nestedMap) {
long total = 0;
for (Map.Entry<Integer, Map<String, Object>> entry : nestedMap.entrySet()) {
int key = entry.getKey();
for (Map.Entry<String, Object> subEntry : entry.getValue().entrySet()) {
try {
Number value = (Number) subEntry.getValue(); // 强制转型为Number
total += value.longValue(); // 将Number转为long进行累加
} catch (ClassCastException e) {
System.out.println("Non-numeric value found at key (" + key + ", " + subEntry.getKey() + ")");
}
}
}
return total;
}
public static void main(String[] args) {
Map<Integer, Map<String, Object>> map = new HashMap<>();
// ...填充你的map内容
long result = sumOfValues(map);
System.out.println("Total sum is: " + result);
}
}
```
阅读全文