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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小七的 中级黑马   /  2015-3-21 19:25  /  776 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

创建一个学生类,分别声明String name、int math、int chinese三个私有变量,并提供一系列的公共访问方法和一个总分类:getSum,这里就不贴出Student类了,主要看main函数。
代码如下:
  1. import java.util.Comparator;
  2. import java.util.Scanner;
  3. import java.util.TreeSet;

  4. public class Demo {
  5.         public static void main(String[] args) {
  6.                 Scanner sc = new Scanner(System.in);
  7.                 TreeSet<Student> stuSet = new TreeSet<>(
  8.                                
  9.                         new Comparator<Object>(){
  10.                         public int compare(Object o1, Object o2) {
  11.                                 Student stu1 = (Student)o1;
  12.                                 Student stu2 = (Student)o2;
  13.                                 //比较总分:降序
  14.                                 int sum = stu2.getSum() - stu1.getSum();
  15.                                 //如果总分相同,排语文分,升序
  16.                                 int num1 = (sum == 0 ? stu1.getChinese() - stu2.getChinese() : sum);
  17.                                 //如果语文相同,排数学
  18.                                 int num2 = (num1 == 0 ? stu1.getMath() - stu2.getMath() : num1);
  19.                                 return num2;
  20.                         }});
  21.                         for(int i = 1 ;i <= 2 ; i++){
  22.                                 System.out.println("请输入第 " + i + " 名学员信息:");
  23.                                 System.out.print("姓名:");
  24.                                 String name = sc.next();
  25.                                 System.out.print("语文:");
  26.                                 int chinese = sc.nextInt();
  27.                                 System.out.print("数学");
  28.                                 int math = sc.nextInt();
  29.                                
  30.                                
  31.                                 //封装Student对象
  32.                                 Student stu = new Student(name,chinese,math);
  33.                                 //添加到集合
  34.                                 stuSet.add(stu);
  35.                         }
  36.                        
  37.                         System.out.println("遍历集合:");
  38.                         System.out.println("\t姓名\t总分\t语文\t数学");
  39.                         for(Student stu : stuSet){
  40.                                 System.out.println("\t"  + stu.getName() + "\t" + stu.getSum() + "\t" +
  41.                                                                         stu.getChinese() + "\t" + stu.getMath() + "\t" );
  42.                         }
  43.         }
  44. }
复制代码


这种排序的方法,也可以用ArrayList来做,思路相似,ArrayList可以实现接口compareble,重写compreTo方法。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马