通过嵌套映射进行复杂迭代

时间:2017-05-05 12:24:14

标签: java list dictionary

我有一个像这样的值的表:

my data

我必须累积每个人(列'名称')以上日期和汽车,电脑和餐价。 它应该是这样的:

Summary

我的数据结构如下:

Map<String, Map<Date, List<product_price_object>>> myTable = new TreeMap<>();

我正在尝试迭代Map并嵌套Map和List。 问题是,我无法计算List的总和,如:

product_list.get(i) + product_list_get(i+1)

因为我会用第一行的computer_price来计算car_price。

for(Entry<String, Map<Date, List<LogonuserAllowance>>> entry : history.entrySet()) {

    String currentUser =  entry.getKey();
    user_sum_map.put(currentUser, new TreeMap<>());

    Map<Date, List<LogonuserAllowance>> month_map = entry.getValue();

    for(Entry<Date, List<LogonuserAllowance>> allowance : month_map.entrySet()){
        calender.setTime(allowance.getKey());
        currentMonth = calender.get(Calendar.MONTH);

        user_sum_map.get(currentUser).put(currentMonth, new ArrayList<>());
        BigDecimal newValue = null;
        BigDecimal previousValue = null;
        BigDecimal sum = null;
        //iterate through list
        for (int i = 0; i < allowance.getValue().size(); i++) {                 
            newValue = allowance.getValue().get(i).getPrice();
            previousValue =  user_sum_map.get(currentUser).get(currentMonth).get(i-1);
            sum = previousValue.add(newValue);
            user_sum_map.get(currentUser).get(currentMonth).add(sum);
        }
    }

}

我担心,我的解决方案是复杂的,也许还有一些 更容易迭代和累积上个月和价格。

0 个答案:

没有答案