原来数据:
[{tableid=material_prop_149422948, material_prop_name=亚麻, material_prop_content=2.00, rowno=2},
{tableid=material_prop_149422948, material_prop_name=二烯类弹性纤维(橡胶), material_prop_content=2.00, rowno=1},
{tableid=material_prop_149422948, material_prop_name=再生纤维素纤维, material_prop_content=12.00, rowno=0}]
想要的效果
[material_prop_name=亚麻, material_prop_content=2.00},
{material_prop_name=二烯类弹性纤维(橡胶), material_prop_content=2.00},
{material_prop_name=再生纤维素纤维, material_prop_content=12.00}]
现在效果
[{material_prop_name=再生纤维素纤维, material_prop_content=12.00},
{material_prop_name=再生纤维素纤维, material_prop_content=12.00},
{material_prop_name=再生纤维素纤维, material_prop_content=12.00}]
代码
private static PlateItemMultiComplexField setValue(List> listMap,
PlateItemMultiComplexField multicomplexField) {
List list = multicomplexField.getFields();
List values = new ArrayList();
if (null != listMap && listMap.size() > 0) {
for (Map map : listMap) {
jeecg.tpnec.beans.item.ComplexValue v = new jeecg.tpnec.beans.item.ComplexValue();
for (PlateItemField f : list) {
v = setField(f, map, v);
}
values.add(v);
}
}
multicomplexField.setValues(values);
//
// multicomplexField.setComplexValues(values);
return multicomplexField;
}
代码没有注释,可读性不是很强,但有一点可以看出来。for中的第二次循环是有问题的
for(PlateItemField f:list){v=setField(d,map,v)} 这个循环每次执行完毕的结果都是v最后都等于list中的最后一个值,少加个判断条件吧,当匹配某个值得时候再给v赋值,并break;跳出循环
你这样写的话,这个for循环就没有什么意义,等价于一句代码:v=setField(list[list.size()-1],map,v);