List合并相同的项的问题?
5月15日 上海 OSC 源创会 开始报名~!>>> »
表A:
DM 版面 类型 总数量 已使用 空闲
金点子 封面 彩板 5 1 4
金点子 封面 彩板 5 1 4
金点子 封面 彩板 5 1 4
金点子 封面 彩板 5 1 4
金点子 头版 信息版 8 1 7
金点子 头版 信息版 5 1 4
金点子 头版 信息版 12 1 11
表B
DM 版面 类型 总数量 已使用 空闲
金点子 封面 彩板 20 4 16
金点子 头版 信息版 25 3 22
如上所示,要将表A合并成表B,也就是把将DM、版面、类型相同的列进行合并,总数量、已使用、空闲进行累加合并成一条数据,在程序中怎么实现?
其中表A存储在List中
提供一种程序实现的思路 具体还的你自己修改·
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Map<String,String[]> map=new HashMap<String,String[]>();//存放叠加的数据
List<String[]> list=new ArrayList<String[]>();//数据list
list.add(new String[]{"金点子","封面","彩板","5","1","4"});
list.add(new String[]{"金点子","封面","彩板","5","1","4"});
list.add(new String[]{"金点子","封面","彩板","5","1","4"});
list.add(new String[]{"金点子","封面","彩板","5","1","4"});
list.add(new String[]{"金点子","头版","信息版","8","1","7"});
list.add(new String[]{"金点子","头版","信息版","5","1","4"});
list.add(new String[]{"金点子","头版","信息版","12","1","11"});
for(String[] strs : list){//循环数据
String[] strTemp=map.get(strs[1]);//判断是否已存在
if(strTemp!=null){//存在就数据相加
strTemp[3]=(Integer.parseInt(strTemp[3])+Integer.parseInt(strs[3]))+"";
strTemp[4]=(Integer.parseInt(strTemp[4])+Integer.parseInt(strs[4]))+"";
strTemp[5]=(Integer.parseInt(strTemp[5])+Integer.parseInt(strs[5]))+"";
}else{//不存在就添加数据
map.put(strs[1], strs);
}
}
//迭代输出结果
System.out.println("DM\t版面\t类型\t总数量\t已使用\t空闲");
for(String key : map.keySet()){
String[] strTemp=map.get(key);
System.out.println(strTemp[0]+"\t"+strTemp[1]+"\t"+strTemp[2]+"\t"+strTemp[3]+"\t"+strTemp[4]+"\t"+strTemp[5]);
}
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。