5-1 jmu-java-m05-使用Comparable接口排序 (10分)

这篇博客介绍如何在Java中通过让类实现Comparable接口来实现对象的排序。内容涉及Person、Student和Teacher类的定义,以及如何在main方法中创建、排序和输出这些对象。排序规则是首先按名字降序,名字相同则按ID降序。
摘要由CSDN通过智能技术生成

5-1 jmu-java-m05-使用Comparable接口排序 (10分)
该程序包含 (以下类名请严格按照要求来定义)

Person类继承Comparable接口:

属性:int id, String name, String birthDate。注意:定义时需按照顺序从上到下定义。

方法:构造方法(id, name, birthDate), id与birthDate的getter方法, name的getter/setter方法,Eclipse自动生成的tostring。

compareTo方法:先比较name,按降序进行排序,如果name值一样,则按id降序进行排序。

Student类继承自Person:

属性:int enrollmentYear, String clazzName。

方法:构造方法(id, name, birthdate, enrollmentYear, clazzName),建议使用super复用Person的构造函数。toString方法(包含两行,第一行为父类的toString方法,第二行为Student类自身属性的toString方法,具体格式见输出样例)

Teacher类继承自Person:

属性:String department, double salary。

方法:构造方法(id, name, brithdate, department, salary),建议使用super复用Person的构造函数。toString方法(包含两行,第一行为父类的toString方法,第二行为Teacher类自身属性的toString方法,具体格式见输出样例)

检验代码如下,请务必粘贴至main函数末尾进行检测(需要导入import java.lang.reflect.*;包)

Class interfaces[] = Person.class.getInterfaces();
for(Class inf:interfaces) {
System.out.println(inf);
}

main方法如下:

public static void main(String[] args) {
String[] types = {“Student”,“Teacher”};
//输入种子seed,并用其初始化Random对象
//输入对象生成数量n
//以下是生成n个对象的循环
//使用random.nextInt(2)从types数组中随机选取元素x并输出
//根据x选择输入相应的参数
//输出集合中的每个对象的toString
//对集合进行排序并输出提示信息
//输出排序后集合的toString
//请在此粘贴上检验程序代码
}

输入格式:
随机数种子seed

产生对象数量n

n行,每行是每个对象的信息信息。

如果要生成Student对象则依次输入:姓名 出生日期 入学年份 班级

如果要生成Teacher对象则依次输入:姓名 出生日期 系 薪水

注意:每个对象的id为每次循环的序数,依次从0到n-1

输出格式:
n个对象的类型

n个对象的toString

排序后的提示信息

排序后的n个对象的toString

输入样例:
3
6
Liz 1986-10-10 CS 2000
Tom 1978-05-07 CS 2500.5
Sally 2000-01-03 2018 Net01
Tom 1988-06-07 Mechanical 1990
Sally 2001-02-05 2019 Software02
Li 1978-05-07 cs 2400

输出样例:
Teacher
Teacher
Student
Teacher
Student
Teacher
Person [id=0, name=Liz, birthDate=1986-10-10]
Teacher [department=CS, salary=2000.0]
Person [id=1, name=Tom, birthDate=1978-05-07]
Teacher [department=CS, salary=2500.5]
Person [id=2, name=Sally, birthDate=2000-01-03]
Student [enrollmentYear=2018, clazzName=Net01]
Person [id=3, name=Tom, birthDate=1988-06-07]
Teacher [department=Mechanical, salary=1990.0]
Person [id=4, name=Sally, birthDate=2001-02-05]
Student [enrollmentYear=2019, clazzName=Software02]
Person [id=5, name=Li, birthDate=1978-05-07]
Teacher [department=cs, salary=2400.0]
afterSort:
Person [id=3, name=Tom, birthDate=1988-06-07]
Teacher [department=Mechanical, salary=1990.0]
Person [id=1, name=Tom, birthDate=1978-05-07]
Teacher [department=CS, salary=2500.5]
Person [id=4, name=Sally, birthDate=2001-02-05]
Student [enrollmentYear=2019, clazzName=Software02]
Person [id=2, name=Sally, birthDate=2000-01-03]
Student [enrollmentYear=2018, clazzName=Net01]
Person [id=0, name=Liz, birthDate=1986-10-10]
Teacher [department=CS, salary=2000.0]
Person [id=5, name=Li, birthDate=1978-05-07]
Teacher [department=cs, salary=2400.0]
这里是检验代码输出

注意:样例输出不包含检验代码输出,提交时请务必添加检验代码。

作者
郑如滨
单位
集美大学
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
import java.lang.reflect.*;

public class Main {
   
	public static void main(String[] args) {
   
    	Scanner sc=new Scanner(System.in);
    	String[] types = {
   "Student","Teacher"
好的,我可以回答这个问题。Comparator接口Java中用于比较两个对象的接口,可以用于排序等操作。如果我们想要对一个对象列表进行排序,可以使用Collections.sort()方法,并且指定一个Comparator对象作为参数来实现排序。下面是一个使用Comparator接口进行排序的示例代码: 假设我们有一个Student,有两个属性,分别是姓名和年龄。 ```java public class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } ``` 现在我们有一个Student对象列表,我们想要按照年龄升序排序,可以使用以下代码: ```java List<Student> studentList = new ArrayList<>(); studentList.add(new Student("张三", 18)); studentList.add(new Student("李四", 20)); studentList.add(new Student("王五", 19)); Collections.sort(studentList, new Comparator<Student>() { @Override public int compare(Student o1, Student o2) { return o1.getAge() - o2.getAge(); } }); ``` 在上面的代码中,我们创建了一个Comparator对象,实现了compare方法,该方法接收两个Student对象作为参数,并返回一个int值,表示比较的结果。如果返回一个负数,则表示o1比o2小;如果返回一个正数,则表示o1比o2大;如果返回0,则表示o1等于o2。最后,我们调用Collections.sort()方法,并将studentList和Comparator对象作为参数传入,即可对列表进行排序。 希望这个示例可以帮助你理解如何使用Comparator接口进行排序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值