【需求】:对学生对象进行按年龄升序排序
学生Student(name,age) 地址String
【代码】:
/*
需求:
学生Student(name,age) 地址String
*/
import java.util.*;
class Student implements Comparable<Student>
{
private String name;
private int age;
Student(String name,int age){
this.age=age;
this.name=name;
}
public String getName(){
return name;
}
public int getAge(){
return 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*12;
}
public boolean equals(Object obj){
if(!(obj instanceof Student)){
throw new RuntimeException("不是学生对象");
}
Student s=(Student)obj;
return this.name.equals(s.name)&&this.age==s.age;
}
public String toString(){
return name+"::"+age;
}
}
class MapDemo
{
public static void main(String[] args)
{
HashMap<Student,String> hm=new HashMap<>();
hm.put(new Student("lisi01",23),"beijing");
hm.put(new Student("lisi02",29),"taiwan");
hm.put(new Student("lisi03",26),"xianggang");
hm.put(new Student("lisi04",23),"shanghai");
hm.put(new Student("lisi01",23),"beijing");
hm.put(new Student("lisi01",23),"lijiang");
//keySet取出
Set<Student> keySet=hm.keySet();
Iterator<Student> it=keySet.iterator();
while(it.hasNext()){
Student s=it.next();
String addr=hm.get(s);
System.out.println(s+"......"+addr);
/*
lisi01::23......lijiang
lisi04::23......shanghai
lisi03::26......xianggang
lisi02::29......taiwan
*/
}
}
}
【输出】: