黑马程序员技术交流社区

标题: treeSet如何实现排序 [打印本页]

作者: lxsaks    时间: 2014-12-26 13:33
标题: treeSet如何实现排序
昨天在做黑马程序员入学的基础测试题,创建一个Student类,有name ,age,score三个属性。创建5个student 对象,装入TreeSet中,要根据score排序。纠结
作者: kakawin    时间: 2014-12-26 15:16
看视频吧,视频有讲的。
compareTo 和Comparator
作者: I空空    时间: 2014-12-28 23:34
这个不难,看视频了就会
作者: lpf870826    时间: 2014-12-31 09:29
我怎么不能发表提问??
作者: 周景新    时间: 2014-12-31 11:05
视频里面有,这个我刚看过
作者: 446111220    时间: 2014-12-31 11:30
其实很多看完视频也不懂,那就多做题吧,做多了自己就懂了,我是这么认为的。
作者: 小马范    时间: 2014-12-31 12:34
子集可以再Student类中实现Comprabale,重写Compare方法
作者: 被风扬起的沙    时间: 2014-12-31 12:48
等我下午学了就教教你:lol
作者: xiao飞    时间: 2014-12-31 13:15
用Student类实现,Compnable 方法,复写里面的compTo方法就行,可以自己定义用什么样的方式排序
作者: 没说的话……    时间: 2014-12-31 13:33
  1. public class StudentDemo {
  2.         public static void main(String[] args) throws IOException {
  3.                 TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() {

  4.                         public int compare(Student s1, Student s2) {
  5.                                 int num = s2.getSum() - s1.getSum();
  6.                                 int num2 = num == 0 ? s1.getChinese() - s2.getChinese() : num;
  7.                                 int num3 = num2 == 0 ? s1.getEnglish() - s2.getEnglish() : num2;
  8.                                 int num4 = num3 == 0 ? s1.getMath() - s2.getMath() : num3;
  9.                                 int num5 = num4 == 0 ? s1.getName().compareTo(s2.getName())
  10.                                                 : num4;
  11.                                 return num5;

  12.                         }
  13.                 });
  14.                 for (int x = 1; x <= 5; x++) {
  15.                         Scanner sc = new Scanner(System.in);
  16.                         System.out.println("请输入第" + x + "个的学习信息");
  17.                         System.out.println("姓名:");
  18.                         String name = sc.nextLine();
  19.                         System.out.println("语文成绩:");
  20.                         int chinese = sc.nextInt();
  21.                         System.out.println("数学成绩:");
  22.                         int math = sc.nextInt();
  23.                         System.out.println("英语成绩:");
  24.                         int english = sc.nextInt();

  25.                         Student s = new Student();
  26.                         s.setName(name);
  27.                         s.setChinese(chinese);
  28.                         s.setEnglish(english);
  29.                         s.setMath(math);
  30.                         ts.add(s);
  31.                 }
  32.                 BufferedWriter bw = new BufferedWriter(new FileWriter("Student.txt"));
  33.                 bw.write("学生信息如下:");
  34.                 bw.newLine();
  35.                 bw.flush();
  36.                 bw.write("姓名:语文成绩,英语成绩,数学成绩");
  37.                 bw.newLine();
  38.                 for (Student s : ts) {
  39.                         StringBuilder sb = new StringBuilder();
  40.                         sb.append(s.getName()).append(":").append(s.getChinese())
  41.                                         .append(",").append(s.getEnglish()).append(",")
  42.                                         .append(s.getMath());
  43.                         bw.write(sb.toString());
  44.                         bw.newLine();
  45.                         bw.flush();
  46.                 }
  47.                 bw.close();
  48.                 System.out.println("学生信息录取完毕");
  49.         }
  50. }
复制代码

作者: hello_csu    时间: 2014-12-31 13:51
有两种方式:对象本身的自然排序,或者实现容器的可比较性(comparator)




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