第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
不知道你是不想要这样的结果啊,只需修改字符串长度就可以用了