本帖最后由 孙百鑫 于 2013-3-28 23:16 编辑
/*
每一个学生都有对应的归属地.
学生Student,地址String
学生属性.姓名.年龄.
注意.:姓名和年龄相同的视为同一个学生.
保证学生的唯一性.
1. 描述学生.
2.定义map容器.将学生作为键,地址作为值,存入.
3.获取map集合中的元素.
*/
import java.util.*;
class Student implements Comparable<Student>//实现Comparable接口明确类型
{
private String name;
private int age;
Student(String name,int age)
{
this.name=name;
this.age=age;
}
public int compareTo(Student s)//明确比较类型 ,比较的是Student
{
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)//传进去的类型不匹配,所以用Object
{
if(!(obj instanceof Student))//如果Obj和Student不相等的话抛出异常
throw new ClassCastException("类型不匹配");
Student s=(Student)obj;//把obj强制转换成Student学生
return this.name.equals(s.name) && this.age==s.age;//这句话什么意思啊?????????????????????????????????????
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
public String toString()
{
return name+".."+age;
}
}
class MapTest
{
public static void main(String[] args)
{
HashMap<Student,String> hm=new HashMap<Student,String>();
hm.put(new Student("lisi1",21),"beijing");
hm.put(new Student("lisi2",22),"shaghan");
hm.put(new Student("lisi3",23),"nanjing");
hm.put(new Student("lisi4",24),"wuhan");
//第一种取出方式 keySet
Set<Student> keySet=hm.keySet();
Iterator<Student> it=keySet.iterator();
while(it.hasNext())
{
Student stu=it.next();
String addr=hm.get(stu);
System.out.println(stu+".."+addr);
}
}
}
|