DAFASFDASFADS 2022-10-17 20:25 采纳率: 100%
浏览 134
已结题

学生的姓名长度排序,姓名长度相同时比较学生姓名,姓名相同时,比较学生年龄。

package javaapplication83;
import java.util.*;
import java.util.TreeSet;
import java.util.Comparator;
public class JavaApplication83 {
public static void main(String[] args) {
Student s1=new Student("Tom",18);
Student s2=new Student("Jerry",19);
Student s3=new Student("Jack",18);
Student s4=new Student("Rose",17);
Student s5=new Student("Rose",20);

    Course c1=new Course("C",48);
    Course c2=new Course("JAVA",64);
    Course c3=new Course("C++",48);
    Course c4=new Course("Python",64);
    
    
    Teacher t1=new Teacher("老王",38,"通信技术");
    Teacher t2=new Teacher("老张",52,"通信技术");
    Teacher t3=new Teacher("老李",48,"通信技术");
 

HashMap map =new HashMap(){
public int compare(Student s1,Student s2){
int num =s1.name.length()-s2.name.length();
int num2=(num==0)?(s1.name.compareTo(s2.name)):num;

    int num3 =((num2==0)?(s1.age-s2.age):num2);
    return num3;  
    }
    };    
    map.put(s1,c1);
    map.put(s2,c2);
    map.put(s3,c3);
    map.put(s4,c4);
    map.put(s5,c4);
    

    Set ks=map.keySet();
    Iterator it =ks.iterator();
    while(it.hasNext()){
        Object key=it.next();
        Object value=map.get(key);
        System.out.println(key+"-->"+value);
    }

package javaapplication83;
public class Course {
public String name;
public int credit;
public Course(){}
public Course(String name, int credit){
super();
this.credit=credit;
this.name=name;
}

public int compareTo(Object o){
       Course c1=(Course)o; 
       if(this.name.charAt(0)==c1.name.charAt(0)){
       return 1;
       }
       else if(this.name.charAt(0)==c1.name.charAt(0)){
               return this.credit-c1.credit;
               }
       else{
           return -1;
       }
   }
public String toString(){
    return this.name+":"+credit+"学分";
}

}

package javaapplication83;
public class Student {
public String name;
public int age;
public Student(){}
public String getName(){
return name;
}
public void setName(){
this.name=name;
}
public int getAge()
{
return age;
}
public void setAge(int age){
this.age=age;
}
public Student(String name, int age){
super();
this.age=age;
this.name=name;
}
public int compare(Object obj){
Student stu=(Student)obj;
if(this.age-stu.age>0){
return 1;
}
if(this.age-stu.age==0){
return this.name.compareTo(stu.name);
}
return -1;
}
public String toString(){
return this.name+":"+age+"岁";
}
}

package javaapplication83;
public class Teacher {
public String name;
public int age;
public String major;
public String getName(){
return name;
}
public void setName(){
this.name=name;
}
public int getAge()
{
return age;
}
public void setAge(int age){
this.age=age;
}
public Teacher(){}
public Teacher(String name, int age,String major){
super();
this.age=age;
this.name=name;
this.major=major;
}
public String toString(){
return this.name+":"+age+":岁"+major;
}
}

  • 写回答

5条回答 默认 最新

  • Java大魔王 2022-10-17 21:51
    关注

    你的代码就差一步

    
    package javaapplication83;
    
    import java.util.*;
    
    public class JavaApplication83 {
        public static void main(String[] args) {
            Student s1 = new Student("Tom", 18);
            Student s2 = new Student("Jerry", 19);
            Student s3 = new Student("Jack", 18);
            Student s4 = new Student("Rose", 17);
            Student s5 = new Student("Rose", 20);
    
            Course c1 = new Course("C", 48);
            Course c2 = new Course("JAVA", 64);
            Course c3 = new Course("C++", 48);
            Course c4 = new Course("Python", 64);
    
            Teacher t1 = new Teacher("老王", 38, "通信技术");
            Teacher t2 = new Teacher("老张", 52, "通信技术");
            Teacher t3 = new Teacher("老李", 48, "通信技术");
    
            TreeMap<Student, Course> map = new TreeMap<Student, Course>(new Comparator<Student>() {
                @Override
                public int compare(Student s1, Student s2) {
                    int num =s1.name.length()-s2.name.length();
                    int num2=(num==0)?(s1.name.compareTo(s2.name)):num;
                    int num3 =((num2==0)?(s1.age-s2.age):num2);
                    return num3; 
                }
            });
            map.put(s1, c1);
            map.put(s2, c2);
            map.put(s3, c3);
            map.put(s4, c4);
            map.put(s5, c4);
    
            Set ks = map.keySet();
            Iterator it = ks.iterator();
            while (it.hasNext()) {
                Object key = it.next();
                Object value = map.get(key);
                System.out.println(key + "-->" + value);
            }
        }
    }
    

    红色框起来的地方该改成我这样就行了

    img

    结果:

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 10月26日
  • 已采纳回答 10月18日
  • 创建了问题 10月17日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么