我正在尝试处理 3 个哈希图并将它们的数据放入值对象列表中。但是,我的代码在某处失败时遇到了问题。
这是我想要完成的场景:
Map1 是源地图,map2 和 map3 用于与 map1 进行比较。最后,我将结果存储到 VO(值对象)中。
HashMap<Integer, BigDecimal> map1=new HashMap<Integer, BigDecimal>();
map1.put(1,10)
map1.put(2,20)
map1.put(3,30)
map1.put(4,40)
map1.put(5,50)
Map<Integer,String> map2=new HashMap<Integer,String>();
map2.put(1,"Y");
map2.put(2,"N");
Map<Integer,String> map3=new HashMap<Integer,String>();
map3.put(3,"N");
map3.put(4,"N");
map3.put(5,"N");
public Map<Integer, BigDecimal> process(
final Map<Integer, BigDecimal> map1,
final Map<Integer, String> map, final List<EmployeeVO> empDetails) {
final Iterator<Integer> keys = map1.keySet().iterator();
while (keys.hasNext()) {
final EmployeeVO empVO = new EmployeeVO();
final Integer empKeys = keys.next();
empVO.setEmpId(empKeys);
empVO.setEmpAmount(map1.get(empKeys));
if (("Y".equals(map.get(empKeys)))) {
empVO.setInd("Y");
keys.remove();
} else
empVO.setInd("N");
empDetails.add(empVO);
}
return map1;
}
员工VO:
public class EmployeeVO{
private BigDecimal empAmount=new BigDecimal(0);
private Integer empId;
private String ind;
//setters and getters
}
我正在调用上面的方法,如下所示,令人惊讶的是,我的列表对象中有 10 条记录。你能告诉我如何解决这个问题吗?
final List<EmployeeVO> empDetails = new CopyOnWriteArrayList<EmployeeVO>();
final Map<Integer, BigDecimal> result1 = process(map1, map2, empDetails );
final Map<Integer, BigDecimal> result2 = process(map1, map3, empDetails );
预期结果:列表应包含 5 个 VO 对象,但有 9 个记录