7-3 jmu-Java-04面向对象进阶--02-接口-Comparator (10分)

 

package day01;

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Demo03 {
    public static void main(String[] args) {
        Scanner r = new Scanner(System.in);
        int n = r.nextInt();
        PersonSortable2 s[] = new PersonSortable2[n];
        for(int i=0;i<n;i++){
            String name = r.next();
            int age = r.nextInt();
            s[i] = new PersonSortable2(name,age);
        }
        Arrays.sort(s,new NameComparator());
        System.out.println("NameComparator:sort");
        for (PersonSortable2 i:s){
            System.out.println(i);
        }
        Arrays.sort(s,new AgeComparator());
        System.out.println("AgeComparator:sort");
        for(PersonSortable2 i:s){
            System.out.println(i.toString());
        }
        System.out.println(Arrays.toString(NameComparator.class.getInterfaces()));
        System.out.println(Arrays.toString(AgeComparator.class.getInterfaces()));
    }
}
class PersonSortable2{
    public String name;
    public int age;
    public PersonSortable2(String name,int age){
        this.name = name;
        this.age = age;
    }
    /*toString()是Java中的一个方法,用于将对象转换为字符串表示形式。
    * 这个方法通常被用于打印输出或者在日志中记录对象信息。
    * 使用toString()方法可以方便地获取对象的字符串表示,而不是默认的对象引用值。
    * 在实际开发中,我们经常需要重写toString()方法来自定义对象的字符串表示。
    */
    public String toString(){
        return name+"-"+age;
    }
}
class NameComparator implements Comparator<PersonSortable2>{
    public int compare(PersonSortable2 o1,PersonSortable2 o2){
        if(o1.name.compareTo(o2.name)>0) return -1;
        //o1.name>o2.name
        else if(o1.name.compareTo(o2.name)<0) return -1;
        //o1.name<o2.name
        else  //o1.name=o2.name 
            return o1.name.compareTo(o2.name);

    }
}
class AgeComparator implements Comparator<PersonSortable2>{
    public int compare(PersonSortable2 o1,PersonSortable2 o2){
        if(o1.age<o2.age) return -1;
        else return 1;
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值