Итерация HashMap <>, включенного в List <>, чтобы получить добавление переменных массива, включенных в карту, в качестве значений в Java - PullRequest
0 голосов
/ 12 мая 2018

У меня есть BankDetails как объект pojo со следующими переменными и его получателями и установщиками.

private String bankName;
private  Map<String,Long[]>  monthMap= newHashMap<String,Long[]>();
private String month;

Теперь я создал список с каждым bean-компонентом BankDetails, хранящимся в списке, с несколькими ключами и значениями в его карте, например

для одного боба у меня есть

map1 = 05, [8,0,0] ;map2 = 06, [6,0,4] ;map3 = 07, [45,3,0] ;map4 = 08, [0,56,9] ;

для второго боба у меня есть

map1 = 05, [0,0,0] ;map2 = 06, [8,0,4] ;map3 = 07, [5,0,1] ;map4 = 08, [2,6,8] ;

...

Где 05,06,07 и 08Это месяцы.

Теперь я хочу получить сумму всех map1s map2s map3s и map4s по всем bean-компонентам по вертикали.

Теперь я хочу, чтобы grandTotal ежемесячно имел элементы массива всех списков.объекты и возвращаемый список, который будет иметь только 4 объекта, имеющих всего четыре, как показано ниже.

map1- 05, [8, 0 ,0] ; map2- 06, [12,0,8] ; map3- 07,[50,3,1] : map4- 08, [2,62,17]

, пожалуйста, предложите, как я могу это сделать.Быть новичком в Java очень слабо в итерациях и логике.

1 Ответ

0 голосов
/ 12 мая 2018

Вы можете сделать что-то вроде этого:

    // Declare a ArrayList of Map Objects
    ArrayList<Map<String,Long[]>> mapsList = new ArrayList<>();

    // add all the beans
    mapsList.add(monthMap);
    mapsList.add(monthMap2);
    .
    .


    // declare a map for storing the sum
    Map<String,Long[]> sumMap = new HashMap<>();

    // for every key in map (assuming maps have the same amount 
    // of key-value pairs)
    for(String str : mapsList.get(0).keySet()){
        // initialising sum for long arrays
        Long[] sum = {0L,0L,0L};
        // for every map bean
        for (int i = 0; i < mapsList.size(); i++){
            // for every column in long array of map
            for (int j = 0; j < mapsList.get(i).get(str).length; j++) {
                sum[j] += mapsList.get(i).get(str)[j];
            }
        }
        sumMap.put(str,sum);
    }

Надеюсь, это помогло.

...