Как получить оптимальный уровень производительности и поддерживать читабельность - PullRequest
0 голосов
/ 04 марта 2020

Пожалуйста, обратите внимание, что dueTransfersMap перечисляет customer_consignee и суммы перевода, например, # cust_AB C, 120

dueTransfersCountMap перечисляет количество для соответствующих customer_consginee. DOUBLE_AT относится к разделителю

        Map<String, BigDecimal> dueTransfersMap = new HashMap<String, BigDecimal>();
        Map<String, Long> dueTransfersCountMap = new HashMap<String, Long>();
        BigDecimal dueCustomerConsigneeTransferTotal = BigDecimal.ZERO;
        Long dueCustomerConsigneeTransferCount = 1L;

        for (DueCustomerAndConsigneeTransferData dueTransferRecord : dueTransferRecordList) {
            String sKey = dueTransferRecord.getCustomerName() + Symbol.DOUBLE_AT.getValue() + dueTransferRecord.getConsigneeName();

            if (dueTransferRecord.getCustomerConsigneeTransferWeight() != null) {
                dueCustomerConsigneeTransferTotal = dueTransferRecord.getCustomerConsigneeTransferWeight();
            }

            if (dueTransfersMap.containsKey(sKey)) {
                dueTransfersMap.put(sKey, dueTransfersMap.get(sKey).add(dueCustomerConsigneeTransferTotal));
                dueTransfersCountMap.put(sKey, dueTransfersCountMap.get(sKey) + dueCustomerConsigneeTransferCount);
            } else {
                dueTransfersMap.put(sKey, dueCustomerConsigneeTransferTotal);
                dueTransfersCountMap.put(sKey, dueCustomerConsigneeTransferCount);
            }
        }
...