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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 卢祥洲 中级黑马   /  2013-6-16 09:49  /  1964 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. /*
  2. 每一个学生都有对应的归属地。
  3. 学生Student,地址String.
  4. 学生属性:姓名、年龄
  5. 注意:姓名和年龄相同的视为同一个学生
  6. 保证学生的唯一性。

  7. 1、描述学生
  8. 2、定义map容器。将学生作为键,地址作为值存入。
  9. 3、获取map集合中的元素。
  10. */
  11. import java.util.*;
  12. class Student implements Comparable<Student>{         //******************************就这货这里报的错
  13.         private String name;
  14.                 private int age;
  15.                 Student(String name,int age){
  16.                         this.name = name;
  17.                         this.age = age;       
  18.                 }
  19.                 public String getName(){
  20.                         return this.name;       
  21.                 }
  22.                 public void setName(String name){
  23.                         this.name = name;
  24.                 }
  25.                 public int getAge(){
  26.                         return this.age;
  27.                 }
  28.                 public void setAge(int age){
  29.                         this.age = age;               
  30.                 }
  31.                 //覆写toString方法,使有自己的toStrign输出方式
  32.                 public String toString(){
  33.                         return         this.name+":"+this.age;
  34.                 }
  35.                 //覆写hashCode和equals方法保证Set集合下的HashSet有唯一性
  36.                 public int hashCode(){
  37.                                 return name.hashCode()+age*34;
  38.                 }
  39.                 public boolean equals(Object obj){
  40.                         if(!(obj instanceof Student)){
  41.                                 throw new ClassCastException("类型不匹配");       
  42.                         }       
  43.                         Student s = (Student)obj;
  44.                         return this.name.equals(s.name)&&this.age==s.age;
  45.                 }
  46.                 //实现Comparable接口和覆写compareTo方法保证Set集合下的TreeSet集合有唯一性
  47.                 public int CompareTo(Student s){
  48.                         int num = new Integer(this.age).compareTo(new Integer(s.age));
  49.                         if(num==0){
  50.                                 return this.name.compareTo(s.name);       
  51.                         }       
  52.                         return num;
  53.                 }
  54. }
  55. public class HashMapTest{
  56.         public static void main(String[] args){
  57.                         HashMap<Student,String> hm = new HashMap<Student,String>();
  58.                         hm.put(new Student("lisi01",21),"beijing");
  59.                         hm.put(new Student("lisi02",22),"shanghai");
  60.                         hm.put(new Student("lisi03",23),"nanjing");
  61.                         hm.put(new Student("lisi04",24),"wuhan");
  62.                        
  63.                         //第一种取出方式、keySet
  64.                         Set<Student> keySet = hm.keySet();
  65.                         Iterator<Student> it = keySet.iterator();
  66.                         while(it.hasNext()){
  67.                                 Student s = it.next();
  68.                                 String add = hm.get(s);
  69.                                 sop(s+"..."+add);
  70.                         }
  71.         }       
  72.         public static void sop(Object obj){
  73.                 System.out.println(obj);       
  74.         }
  75. }
复制代码
毕老师讲HashMap有道练习,求大家帮忙找下我错在哪里了

错误:

评分

参与人数 1技术分 +1 收起 理由
Super_Class + 1

查看全部评分

4 个回复

倒序浏览
方法名写错了。没有实现compareTo方法


public int CompareTo(Student s){
                        int num = new Integer(this.age).compareTo(new Integer(s.age));
                        if(num==0){
                                return this.name.compareTo(s.name);        
                        }        
                        return num;
                }

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1

查看全部评分

回复 使用道具 举报
Super_Class 发表于 2013-6-16 10:04
方法名写错了。没有实现compareTo方法

3QU very much!

方法名和类名定义规则:
1、方法名:第一个单词小写、后面单词首字母大写;
2、类名:单词首字母大写。
回复 使用道具 举报
你下面这段代码有误,要覆盖compareTo方法,而你的方法名写的有误,第一个字母C应该改为小写就可以了
public int compareTo(Student s) {...}
  1. <font color="black">//实现Comparable接口和覆写compareTo方法保证Set集合下的TreeSet集合有唯一性

  2.                public int <strong><font color="red">CompareTo(Student s)</font> {</strong>

  3.                        int num = new Integer(this.age).compareTo(new Integer(s.age));

  4.                        if(num==0){

  5.                                 return this.name.compareTo(s.name);        

  6.                         }        

  7.                         return num;

  8.                 }</font>
复制代码

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1

查看全部评分

回复 使用道具 举报
楼主您好~帖子长时间未作出回答,我已经将您的帖子改成已解决。如果有问题的话可以私密我哦~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马