本帖最后由 刘茂林 于 2013-5-16 00:04 编辑
汗 实在找不出来了 都看了半个小时了。。本来想靠自己搞定的。。
- /**
- * Map 应用: 需求 每一个学生都有对应的归属地。 学生Student,地址String 学生属性: 姓名, 年龄 注意:姓名和年龄相同的视为同一个学生。
- * 保证学生的唯一性。
- *
- * 1, 描述学生的唯一性。
- *
- * 2,定义map容器,将学生作为键,地址作为值,存入。
- *
- * 3,获取map集合中的元素
- *
- */
- import java.util.*;
- class Student implements Comparable<Student>
- {
- private String name;
- private int age;
- Student(String name, int age)
- {
- this.name = name;
- this.age = age;
- }
- 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;
- }
- public int hashCode()// 需要复写哈希码
- {
- return name.hashCode()+age*34;
- }
- public boolean equals(Object obj)// 判断相等 复写 equals方法
- {
- if (!(obj instanceof Student))
- {
- throw new ClassCastException("类型不匹配");
- }
- Student s = (Student) obj;
- return this.name.equals(s.name) && this.age == s.age;
- }
- public String getName()
- {
- return name;
- }
- public int getAge()
- {
- return age;
- }
- public String toStrint()
- {
- return name + ":" + age;
- }
- }
- public class MapTest
- {
- public static void main(String[] args)
- {
- /*Student st1 = new Student("liu01", 23);
- Student st2 = new Student("liu02", 24);
- Student st3 = new Student("liu03", 22);
- Student st4 = new Student("liu04", 21);
- */
- HashMap<Student, String> hm = new HashMap<Student, String>();
- hm.put(new Student("liu01", 22), "beijing");
- hm.put(new Student("liu03", 23), "shanghai");
- hm.put(new Student("liu04", 24), "wuhan");
- hm.put(new Student("liu02", 22), "nanjing");
- // 第一种取出方式 keySet
- Set<Student> keySet = hm.keySet();// 尖括号 泛型
- Iterator<Student> it = keySet.iterator();// 这里也用到泛型
- while (it.hasNext())
- {
- Student stu = it.next();
- String add = hm.get(stu);
- System.out.println(stu + "...." + add);
- }
- }
- }
复制代码 打印的时候打印的不是 Student的 姓名和年龄 打印的是hashCode 还是 地址?
|
|