PositionLog positionLog1 = new PositionLog("9901", "Cbot/CNY_11", "MARGIN_COM", new BigDecimal(1.5),
new BigDecimal(100));PositionLog positionLog2 = new PositionLog("9901", "Cbot/CNY_12", "MARGIN_COM", new BigDecimal(2.5),
new BigDecimal(2));
List<PositionLog> positionLogs = new ArrayList<PositionLog>();
positionLogs.add(positionLog1);
positionLogs.add(positionLog2);
List<Map<String, String>> listMap = null;
for (PositionLog pLog : positionLogs) {
listMap = new ArrayList<Map<String, String>>();
// 这里的listMap必须要放到循环外层new一下ArrayList,不然每次循环加入到list中,下次循环new对象就把上次加入的数据给清空了的,最后存到list中的是最后一条数据。
Map<String, String> params = new HashMap<String, String>();
params.put("bankId", pLog.getBankId());
params.put("productId", pLog.getProductId());
params.put("instrumentId", pLog.getInstrumentId());
params.put("nonBalPosition", pLog.getNonBalPosition().toString());
params.put("balPosition", pLog.getBalPosition().toString());
listMap.add(params);
}
正确如下:
List<Map<String, String>> listMap = new ArrayList<Map<String, String>>();
for (PositionLog pLog : positionLogs) {
Map<String, String> params = new HashMap<String, String>();
params.put("bankId", pLog.getBankId());
params.put("productId", pLog.getProductId());
params.put("instrumentId", pLog.getInstrumentId());
params.put("nonBalPosition", pLog.getNonBalPosition().toString());
params.put("balPosition", pLog.getBalPosition().toString());
listMap.add(params);
}