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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 葛晓东 中级黑马   /  2014-6-6 17:21  /  5637 人查看  /  18 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 葛晓东 于 2014-6-6 17:57 编辑

  1. //要用TreeSet集合,需要导包
  2. import java.util.TreeSet;
  3. /**
  4. * 10、声明类Student,包含3个成员变量:name、age、score,
  5. * 创建5个对象装入TreeSet,按照成绩排序输出结果(考虑成绩相同的问题)。
  6. */
  7. public class Test10 {
复制代码


(139.75 KB, 下载次数: 94)

18 个回复

倒序浏览
哥们,你的主函数呢
回复 使用道具 举报
Boiled_Water 发表于 2014-6-6 17:24
哥们,你的主函数呢

:funk:   我去 这个真丢人
  改了之后为什么还有那么多小叹号啊?
回复 使用道具 举报
那么多小叹号是没加泛型
回复 使用道具 举报
加上<Student>

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
  1. //导包
  2. import java.util.Iterator;
  3. import java.util.TreeSet;

  4. /**
  5. * 10、声明类Student,包含3个成员变量:name、age、score, 创建5个对象装入TreeSet,按照成绩排序输出结果(考虑成绩相同的问题)。
  6. */
  7. public class Test10 {
  8.         public static void main(String[] args) {
  9.                 // 创建TreeSet对象 scoreForm 成绩表
  10.                 TreeSet<Student> scoreForm = new TreeSet<>();
  11.                 // 创建5个对象装入TreeSet(考虑成绩相同的问题)

  12.                 scoreForm.add(new Student("小刚", 18, 88));
  13.                 scoreForm.add(new Student("小明", 18, 92));
  14.                 scoreForm.add(new Student("小强", 18, 95));
  15.                 scoreForm.add(new Student("小龙", 18, 92));
  16.                 scoreForm.add(new Student("小花", 18, 97));
  17.                 // Iterator接口,迭代器,对 collection 进行迭代的迭代器
  18.                 Iterator<Student> iter = scoreForm.iterator();
  19.                 // 循环输出,hasNext()如果仍有元素可以迭代,则返回 true
  20.                 while (iter.hasNext()) {
  21.                         // next() 返回迭代的下一个元素。
  22.                         Student student = (Student) iter.next();
  23.                         System.out.println("姓名:" + student.getName() + ",年龄:"
  24.                                         + student.getAge() + ",成绩:" + student.getScore());
  25.                 }
  26.         }
  27. }

  28. // 因为往TreeSet集合中存元素,TreeSet具有排序功能,但是需要元素自身具有比较性
  29. // 元素需要实现Comparable接口,覆盖CompareTo方法
  30. // 声明类Student
  31. class Student implements Comparable {
  32.         private String name;
  33.         private int age;
  34.         private int score;

  35.         // 构造函数,方便赋值
  36.         Student(String name, int age, int score) {
  37.                 this.name = name;
  38.                 this.age = age;
  39.                 this.score = score;
  40.         }

  41.         // 覆盖compareTo方法
  42.         public int compareTo(Object object) {
  43.                 // 需要判断传入的对象object是不是学生类,如果不是,直接输出"不是学生",用instanceof判断
  44.                 if (!(object instanceof Student))
  45.                         System.out.println("不是学生");
  46.                 // 将Object类强转为Student类(向下转型)
  47.                 Student student = (Student) object;
  48.                 if (this.score > student.score)
  49.                         return 1;
  50.                 if (this.score == student.score) {
  51.                         // 如果成绩相同的时候,要判断姓名(或者年龄也可以)是否相同
  52.                         return this.name.compareTo(student.name);
  53.                 }
  54.                 return -1;
  55.         }

  56.         public String getName() {
  57.                 return name;
  58.         }

  59.         public int getAge() {
  60.                 return age;
  61.         }

  62.         public int getScore() {
  63.                 return score;
  64.         }
  65. }
复制代码
加了          在声明Student实现Compareable的那行还是有个小黄点啊

点评

你写的这个程序考虑成绩是小数点的么  发表于 2015-5-27 18:27
回复 使用道具 举报
接口Comparable也要加泛型的,你把它的泛型变成Object就好了
回复 使用道具 举报
crazystraw 发表于 2014-6-6 20:25
接口Comparable也要加泛型的,你把它的泛型变成Object就好了

嗯嗯 ,我试试
回复 使用道具 举报
crazystraw 发表于 2014-6-6 20:25
接口Comparable也要加泛型的,你把它的泛型变成Object就好了

,好尴尬,不知道怎么加啊、、、、、
回复 使用道具 举报
main方法上加个 @SuppressWarnings("unchecked") 就好了 就不会检查啦泛型的问题
回复 使用道具 举报
class Student implements Comparable<Object>{···}
回复 使用道具 举报
JDK1.5版本后 出现泛型   不用泛型  就会有警告
回复 使用道具 举报
思路1:让Student类实现Comparable接口,定义其中的compareTo方法  
思路2:自己建一个实现Comparator的比较器类,定义其中的compare方法,然后在new  TreeSet时调用对应的构造函数
回复 使用道具 举报
接口那里加个泛型 implements Comparable<Object>
回复 使用道具 举报
哦   那个泛型  我们还木有学....老师说不重要
回复 使用道具 举报
清规欲 发表于 2014-6-7 11:58
思路1:让Student类实现Comparable接口,定义其中的compareTo方法  
思路2:自己建一个实现Comp ...

嗯 ,今天刚好学了比较器,我在优化下代码
回复 使用道具 举报
你学的怎么样啦呢
回复 使用道具 举报
视频里没有酱新特性 是10年的啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马