黑马程序员技术交流社区

标题: List集合输出问题? [打印本页]

作者: 汪璨    时间: 2012-6-10 21:44
标题: List集合输出问题?
一个List<Student>类型的集合中有以下数据:
Student类中的属性有:
Company ,No1,NO2,NO3,NO4;
省略getter。setter.

输出的结果是:
Company         No1       No2      No3      No4

WTCCNDEPT1       0          0       2          1
WTCCNDEPT1       0          0       3          1
WTCCNDEPT1       0          0       2          1
WTCCNDEPT2       0          0       3          2
WTCCNDEPT2       0          0       3          2

这种输出来.有重复的数据..我想要的结果是:
//如果重复;则把重复的行变成一行;然后把NO1, NO2,NO3,NO4 的列的值累加.

还有一种情况就是;两行的值,完全相通,则移除一行.;

Company         No1       No2      No3      No4
WTCCNDEPT1        0         0        7        3
WTCCNDEPT2        0         0        3        2

求大家帮下忙

作者: 赵兵锋    时间: 2012-6-10 22:48
  1. public class Main{
  2.         public static void main(String[] args) {
  3.                 List<Student> list = new ArrayList<Student>();
  4.                 list.add(new Student("WTCCNDEPT1",0,0,2,1));
  5.                 list.add(new Student("WTCCNDEPT1",0,0,3,1));
  6.                 list.add(new Student("WTCCNDEPT1",0,0,2,1));
  7.                 list.add(new Student("WTCCNDEPT2",0,0,3,2));
  8.                 list.add(new Student("WTCCNDEPT2",0,0,3,2));
  9.                 System.out.println("如果重复,把重复的行变为一行,且No1,No2,No3,No4值累加");
  10.                 System.out.println("Company\t\tNo1\tNo2\tNo3\tNo4");
  11.                 for(int i=0;i<list.size();i++){
  12.                         int j=0;
  13.                         Student s = list.get(i);
  14.                         for(;j<i;j++){
  15.                                 if(list.get(i).toString().equals(list.get(j).toString())){//检查前面时候有重复的
  16.                                         break;//前面有重复的
  17.                                 }
  18.                         }
  19.                         if(j==i){//前面没有重复的
  20.                                 int counts = 1;
  21.                                 for(j=i+1;j<list.size();j++){
  22.                                         if(list.get(i).toString().equals(list.get(j).toString())){//检查后面是否有重复的
  23.                                                 counts++;//后面有重复的
  24.                                         }
  25.                                 }
  26.                                 System.out.println(s.getCompany()+"\t"+s.getNo1()*counts+"\t"+s.getNo2()*counts+"\t"+s.getNo3()*counts+"\t"+s.getNo4()*counts);
  27.                         }
  28.                 }
  29.                 System.out.println("两行的值完全相同,就移除一行");
  30.                 System.out.println("Company\t\tNo1\tNo2\tNo3\tNo4");
  31.                 for(int i=0;i<list.size();i++){
  32.                         int j=0;
  33.                         for(;j<i;j++){
  34.                                 if(list.get(i).toString().equals(list.get(j).toString())){
  35.                                         break;
  36.                                 }
  37.                         }
  38.                         if(j==i){
  39.                                 System.out.println(list.get(i));
  40.                         }
  41.                 }
  42.         }
  43. }
  44. class Student{
  45.         private String company;
  46.         private int no1;
  47.         private int no2;
  48.         private int no3;
  49.         private int no4;
  50.         public Student(String c,int n1,int n2,int n3,int n4){
  51.                 this.company = c;
  52.                 no1 = n1;
  53.                 no2 = n2;
  54.                 no3 = n3;
  55.                 no4 = n4;
  56.         }
  57.         public String toString(){
  58.                 return company+"\t"+no1+"\t"+no2+"\t"+no3+"\t"+no4;
  59.         }
  60.         //get和set方法未贴
  61. }
复制代码

作者: 蒋亮    时间: 2012-6-10 22:50
把你的代码发给我看看




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2