7-2 jmu-Java-04面向对象进阶-01-接口-Comparable

版权声明:呀呀呀,小可爱代码要自己敲,不要复制哦。 https://blog.csdn.net/qq_43201999/article/details/90047399

7-2 jmu-Java-04面向对象进阶-01-接口-Comparable

问题描述:
Arrays.sort不能对自定义对象进行排序。现希望对自定义的PersonSortable类的对象,使用Arrays.sort进行排序。

1.编写PersonSortable类

属性:private name(String)、private age(int)
有参构造函数:参数为name,age
toString函数:返回格式为:name-age
实现Comparable接口:实现先对name升序排序,如果name相同则对age进行升序排序

2.main方法中

首先输入n
输入n行name age,并创建n个对象放入数组
对数组进行排序后输出。
最后一行使用System.out.println(Arrays.toString(PersonSortable.class.getInterfaces()));输出PersonSortable所实现的所有接口。

代码:

import java.util.*;
class PersonSortable implements Comparable<PersonSortable> {
    private String name;
    private int age;
    public PersonSortable(String name,int age){
        this.name = name;
        this.age = age;
    }
    public String toString(){
        return name + "-" + this.age;
    }
    public int compareTo(PersonSortable stu){
		if(this.name.compareTo(stu.name)>0)return 1;
		else if(this.name.compareTo(stu.name)<0)return -1;
		else{
			if(this.age<stu.age)return -1;
			else return 1;
		}
    }
}
public class Main{
    public static void main(String args[]){
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		PersonSortable stu[]=new PersonSortable[n];
		for(int i=0;i<n;i++) {
			String name=sc.next();
			int age=sc.nextInt();
			stu[i]=new PersonSortable(name,age);
		}
		sc.close();
        java.util.Arrays.sort(stu);
        for(int i=0;i<stu.length;i++){
            System.out.println(stu[i]);
        }
		System.out.println(Arrays.toString(PersonSortable.class.getInterfaces()));
    }
}

好啦,差不多运行一下就可以啦,如果有优化方案,可以留下哦,祝你好运。

猜你喜欢

转载自blog.csdn.net/qq_43201999/article/details/90047399
7-2