我有一个对象列表,其中包含四个对象(员工、学生、患者、客户)。我需要根据它们对应的 ID 按升序对这些列表进行排序。当我使用Collections.sort(list)方法时给出ClassCastException。
以下是我正在使用的完整代码...
注意:我也尝试过Comparator接口,但无法定义compare()方法内部的逻辑来对这些对象进行排序。如果列表包含两个对象,那么在内部定义对这些对象进行排序的逻辑很容易,但是如果列表包含两个以上的对象,那么在compare()方法内部定义排序逻辑就非常困难。
任何人都可以帮助我如何缩短这份清单吗?请修改以下代码并提供解决方案。输出应按 [10,20,30,40,50,60,70,90] 之类的排序顺序
public class Test
{
public static void main(String[] args)
{
List list = new ArrayList();
list.add(new Employee(50));
list.add(new Customer(10));
list.add(new Patient(60));
list.add(new Student(90));
list.add(new Employee(20));
list.add(new Customer(40));
list.add(new Patient(70));
list.add(new Student(30));
Collections.sort(list);
System.out.println(list);
}
}
class Patient implements Comparable<Patient>
{
int pId;
Patient(int pId)
{
this.pId = pId;
}
@Override
public int compareTo(Patient o)
{
return this.pId - o.pId;
}
@Override
public String toString()
{
return this.pId + "";
}
}
class Employee implements Comparable<Employee>
{
int empId;
Employee(int empId)
{
this.empId = empId;
}
@Override
public int compareTo(Employee o)
{
return this.empId - o.empId;
}
@Override
public String toString()
{
return this.empId + "";
}
}
class Customer implements Comparable<Customer>
{
int cId;
Customer(int cId)
{
this.cId = cId;
}
@Override
public int compareTo(Customer o)
{
return this.cId - o.cId;
}
@Override
public String toString()
{
return this.cId + "";
}
}
class Student implements Comparable<Student>
{
int sId;
Student(int sId)
{
this.sId = sId;
}
@Override
public int compareTo(Student o)
{
return this.sId - o.sId;
}
@Override
public String toString()
{
return this.sId + "";
}
}
慕标琳琳
慕斯709654
拉莫斯之舞
相关分类