描述 | 数据表记录包含表索引和数值。请对表索引相同的记录进行合并,合并后表记录为相同索引表的数值求和
函数说明: public int mergeRecord(List oriList, List rstList) 数据表记录包含表索引和数值。请对表索引相同的记录进行合并,合并后表记录为相同索引表的数值求和。 @param oriList 原始表记录。 以List方式存放,TableRecord定义见TableRecord.java, 调用者无需对leRecord.java做任何修改 @param rstList 合并后的表记录 , 以List方式存放 @return 返回合并后表的个数
|
---|---|
知识点 | 栈 |
运行时间限制 | 10M |
内存限制 | 128 |
代码:
package huawei;
public class TableRecord {
private int index;
private int value;
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
package huawei;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Demo {
public int mergeRecord(List<TableRecord> oriList,List<TableRecord> rstList)
{
HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
for (TableRecord tableRecord : oriList) {
if(map.containsKey(tableRecord.getIndex()))
{
Integer value = map.get(tableRecord.getIndex());
value = value + tableRecord.getValue();
map.put(tableRecord.getIndex(), value);
}
else
{
map.put(tableRecord.getIndex(), tableRecord.getValue());
}
}
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
TableRecord tr = new TableRecord();
tr.setIndex(entry.getKey());
tr.setValue(entry.getValue());
rstList.add(tr);
}
return rstList.size();
}
}
package testcase;
import huawei.Demo;
import huawei.TableRecord;
import java.util.LinkedList;
import java.util.List;
import junit.framework.TestCase;
public class DemoTest extends TestCase{
private Demo demo = new Demo();
int rst = 0;
public void testCase01()
{
List<TableRecord> oriList = new LinkedList<TableRecord>();
List<TableRecord> rstList = new LinkedList<TableRecord>();
for (int i = 0; i < 4; ++i) {
oriList.add(new TableRecord());
}
oriList.get(0).setIndex(0);
oriList.get(0).setValue(1);
oriList.get(1).setIndex(0);
oriList.get(1).setValue(2);;
oriList.get(2).setIndex(0);
oriList.get(2).setValue(3);;
oriList.get(3).setIndex(0);
oriList.get(3).setValue(4);;
rst = demo.mergeRecord(oriList, rstList);
assertEquals(1, rst);
assertEquals(0, rstList.get(0).getIndex());
assertEquals(10, rstList.get(0).getValue());
}
}
运行结果: