A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 汪璨 中级黑马   /  2012-6-10 21:44  /  1653 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一个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

求大家帮下忙

评分

参与人数 1技术分 +3 黑马币 +4 收起 理由
wangfayin + 3 + 4 神马都是浮云

查看全部评分

2 个回复

倒序浏览
  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. }
复制代码

评分

参与人数 1技术分 +3 收起 理由
wangfayin + 3 赞一个!

查看全部评分

回复 使用道具 举报
把你的代码发给我看看
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马