java List合并相同的项的问题?

fiene 发布于 2012/07/31 14:14
阅读 6K+
收藏 0

表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中

加载中
0
情天大圣
情天大圣
在SQL中实现吧!
fiene
fiene
表A是我在sql中连接表查询,然后在程序中处理后得出来的,总数量、已使用都是经过处理后得到的数据
0
樂
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]);
		}
	}
}

提供一种程序实现的思路 具体还的你自己修改
fiene
fiene
多谢
0
alipay
alipay

1.通过sql grop by 或者distinct

2.先把list转化成set,再把set转化成list

0
k
kernwang
update B ,
 ( select MD , 版面 , 类型 , sum( 总数量 )  AS C 总数量  , 
                                       sum( 已使用 )  AS  C  已使用
                                       sum(  空闲 )  AS  C  空闲
 group by MD,版面,类型) as  C  
SET B. 总数量 = B. 总数量 + C.C 总数量 , B. 已使用 =   B. 已使用 + C .C  已使用 
WHERE  B.MD = C..MD AND B.版面 = C.版面

试试这个可以吗
0
溜子冲的根
溜子冲的根

引用来自“alipay”的答案

1.通过sql grop by 或者distinct

2.先把list转化成set,再把set转化成list

是的,set中不会有重复元素的,可以通过它来二次过滤
返回顶部
顶部