首页 > 解决方案 > 如何获得最佳性能水平并保持可读性

问题描述

请注意,dueTransfersMap列出了 customer_consignee 及其转账金额,例如 #cust_ABC , 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);
            }
        }

标签: javafor-loophashmaprefactoring

解决方案


推荐阅读