jmu-Java-04面向对象进阶--02-接口-Comparator

import java.util.*; //导入Java包中的类

public class Main{

    public static void main(String[] args) {

        class NameComparator implements Comparator<PersonSortable2>{

            public int compare(PersonSortable2 n1, PersonSortable2 n2) {

                return n1.getName().compareTo(n2.getName());

            }

        }

        class AgeComparator implements Comparator<PersonSortable2>{

            public int compare(PersonSortable2 a1, PersonSortable2 a2) {

                return a1.getAge()-a2.getAge();//这里不能使用compareTo方法

            }

        }

        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();                                                        //对象数组

        PersonSortable2 t[] = new PersonSortable2 [n];

        for(int i = 0;i < n;i++)                                                    //i从0开始递增

        {

            String a = sc.next();                                                    //一次性读取一行

            int b = sc.nextInt();                                                    //一次性读取一行

            PersonSortable2 person = new PersonSortable2(a, b);

            t[i] = person;

        }                                                                            //按照姓名排序

        System.out.println("NameComparator:sort");

        Arrays.sort(t, new NameComparator()) ;

        for(PersonSortable2 i:t) {

            System.out.println(i);

        }                                                                            //按照年龄排序

        System.out.println("AgeComparator:sort");

        Arrays.sort(t, new AgeComparator());

        for(PersonSortable2 i : t){

            System.out.println(i);

        }                                                                            //输出接口的类型

        System.out.println(Arrays.toString(NameComparator.class.getInterfaces()));

        System.out.println(Arrays.toString(AgeComparator.class.getInterfaces()));

        sc.close();

    }

}

class PersonSortable2 {

    private String name;                                                                //字符串name私有化

    private int age;                                                                    //整型age私有化

    public PersonSortable2(String name, int age) {

        super();

        this.name = name;                                                              //调用name

        this.age = age;                                                                //调用age

    }

    @Override                                                                          //重写

    public String toString() {

        return name+"-"+age;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;                                                                //调用name

    }

    public int getAge() {

        return age;

    }

    public void setAge(int age) {

        this.age = age;                                                                  //调用age

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • DAY 05 1、 public classArrayDemo { public static void mai...
    周书达阅读 4,048评论 0 0
  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 5,939评论 0 2
  • 140 - 家电类 Time Limit: 1000 Memory Limit: 65535 Submit: 1...
    z坎坷阅读 3,919评论 0 0
  • Java OOP 什么是面向对象思想? 把一组数据和处理他们的方法组成对象(object),把相同行为的对象归纳为...
    chonglingliu阅读 4,153评论 0 1
  • 50道经典Java编程练习题,将数学思维运用到编程中来。抱歉哈找不到文章的原贴了,有冒犯的麻烦知会声哈~ 1.指数...
    OSET我要编程阅读 11,963评论 0 9