本帖最后由 pthuakai 于 2013-5-16 14:03 编辑
package day16;
import java.util.*;
class Student11 implements Comparable<Student11>//实现一个比较方法。
{
private String name;
private int age;
Student11(String name,int age)
{
this.name=name;
this.age=age;
}
public int compareTo(Student11 s)//比较年龄大小。
{
//下面句子是干啥用的。关键字new Integer.age不是已经是int了,为啥不直接比较却要装箱后比较。
int num=new Integer(this.age).compareTo(new Integer(s.age));
if(num==0)
return this.name.compareTo(name);
return num;
}
public int hashCode()//这个方法是返回此映射到hash码值。但是这又有什么作用呢?在该例子中,不是太明白。尤其是age*34是干什么用的。
{
return name.hashCode()+age*34;
}
public boolean equals(Object obj)//覆盖一个对象。是否是学生类对象。
{
if(!(obj instanceof Student11))
throw new ClassCastException("class not macth");
Student11 s=(Student11)obj;
return this.name.equals(s.name)&&this.age==age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
public String toString()
{
return name+age;
}
}
public class MapTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
HashMap<Student11, String> hm=new HashMap<Student11,String>();
hm.put(new Student11("lisi1",21), "beijing");
hm.put(new Student11("lisi2",22), "shanghai");
hm.put(new Student11("lisi3",23), "tianjing");
hm.put(new Student11("lisi3",23), "tianjing");
hm.put(new Student11("lisi4",24), "wuhan");
//第一种取出方式
Set<Student11> keySet=hm.keySet();
Iterator<Student11>it=keySet.iterator();
while(it.hasNext())
{
Student11 stu=it.next();
String add=hm.get(stu);
System.out.println(add+stu);
}
//第二中取出方式
Set<Map.Entry<Student11, String>> entrySet=hm.entrySet();
Iterator<Map.Entry<Student11, String>> iter=entrySet.iterator();
while(iter.hasNext())
{
Map.Entry<Student11, String> me=iter.next();
Student11 stu=me.getKey();
String addr=me.getValue();
System.out.println(stu+";;"+addr);
}
}
}
|