【需求】:对学生对象进行按年龄升序排序
学生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 StuNameComparator implements Comparator<Student>
{
public int compare(Student s1,Student s2){
int num=s1.getName().compareTo(s2.getName());
if (num==0)
{
return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));
}
return num;
}
}
class MapDemo2
{
public static void main(String[] args)
{
TreeMap<Student,String> hm=new TreeMap<>(new StuNameComparator());
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",27),"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......beijing
lisi01::27......lijiang
lisi02::29......taiwan
lisi03::26......xianggang
lisi04::23......shanghai
*/
}
}
}
【输出】:

本文介绍了一种使用Java实现的学生对象按年龄升序排序的方法,并展示了如何利用TreeMap结合自定义比较器进行排序的过程。通过具体代码实例,演示了如何创建学生对象,以及如何在TreeMap中存储这些对象并按姓名和年龄进行排序。
1161

被折叠的 条评论
为什么被折叠?



