求java代码,需要从arraylist里取某列数,比较,计算相同的数量,然后再相加。得出另一个表。

求java代码。有个arraylist里面存的是一个表格的数。表格的第一列是商品名字。第二列是产地(不需要,忘了)。第三列是货币种类,第4列是价钱。例如:
花生油 xx 人民币 80,
花生油 xxx 港币 90,
花生油 xx 美金 10,
花生油 xxx 人民币 100
玉米油 xx 欧元 12,
玉米油 xxx 欧元 13,
玉米油 xx 人民币 120,
玉米油 xx 港币 150,
调和油 xx 港币 100,
调和油 xxx 人民币 80,
调和油 xx 人民币 70,
调和油 xx 美金 6
需要按三种商品名,如果是同种货币就合并,即将价钱相加得出总额。
如下表:
花生油 人民币 2(意思是有两条record) 180,花生油 港币 1 90, 花生油 美金 1 10,玉米油 欧元 2 25,玉米油 人民币 1 120,玉米油 港币 150,调和油 人民币 2 150,调和油 港币 100,调和油 美金 6
求完整java代码,包括从arraylist中取个别有用的数,做调整,再按要求排列,得出所需的样子。谢谢各位了!跪求~

第1个回答  2012-10-19
楼主,这个可是我谁不着起来花了半个小时想的算法哈,多给分

我没有用对象,用了String[] 数组来模拟你的集合中的表格数据
亲测通过
代码开始了
//--------------------------------------------------------------------------------------------------------------------
import java.util.ArrayList;import java.util.List;
public class test {
List<List<String[]>> all=new ArrayList<List<String[]>>();
List list=new ArrayList();
//测试数据
String[] x={"A","xxxxx","A币","100"};
String[] x1={"A","xxxxx","A币","200",};
String[] x2={"B","xxxxx","B币","300"};
String[] x3={"A","xxxxx","c币","200"};
public List init()//初始化
{
list.add(x);
list.add(x1);
list.add(x2);
list.add(x3);
return list;
}
//筛选方法
public List chose(List te)
{
List<String[]> temp=new ArrayList<String[]>();
String [] A=(String[]) te.get(0);
List<String[]> l=new ArrayList<String[]>();
for (int j = 0; j < te.size(); j++) {
String [] B=(String[]) te.get(j);
if(A[0]==B[0]&&A[2]==B[2] )//这里筛选
l.add(B);
else
temp.add(B);
}
all.add(l);
return temp;
}
//返回所得结果
public List<List<String[]>> result(){
return all;
}

//主方法---------------------------------------------
public static void main(String[] args) {
test t=new test();
List nt=t.chose(t.init());//初始化测试数据
while(true)
{
nt=t.chose(nt);
if(nt.size()==0)
break;
}
List<List<String[]>> res=t.result();
//打印结果
for (int e = 0; e < res.size(); e++) {
List<String[]> fi= res.get(e);
System.out.println("第"+e+"种");
String [] str=fi.get(0);
for(int i=0;i<fi.size();i++){
String[] o=(String[]) fi.get(i);
if(i!=0){
str[3]=(Integer.parseInt(str[3])+Integer.parseInt(o[3]))+"";
}
System.out.println(o[0].toString()+"---"+o[1].toString()+"---"+o[2].toString()+"---"+o[3].toString());
}
System.out.println("合计:\n"+str[0].toString()+"---"+str[2].toString()+"---"+str[3].toString()+"---"+fi.size());
}
}
}
//------------------------------------------------------------------------------
代码结束咯

打印的结果

第0种
A---xxxxx---A币---100
A---xxxxx---A币---200

合计:
A---A币---400---2
第1种
B---xxxxx---B币---300
合计:
B---B币---300---1
第2种
A---xxxxx---c币---200
合计:
A---c币---200---1

不知道你是不想要这样的结果啊,只需修改字符串长度就可以用了
第2个回答  2012-10-18
估计你是从数据库中取出来的,如果这些值是从数据库中取出来的,我建议你还是用SQL做,能够达到你要的效果。
第3个回答  2012-10-18
.你要是带上个80 100分的话可以考虑下
相似回答