Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过在内部类中实现Comparable提供多个排序选项_Java_Inner Classes_Comparable_Compareto - Fatal编程技术网

Java 通过在内部类中实现Comparable提供多个排序选项

Java 通过在内部类中实现Comparable提供多个排序选项,java,inner-classes,comparable,compareto,Java,Inner Classes,Comparable,Compareto,我有一个person对象的数组列表,每个对象都有名字、姓氏和年龄。我想使用一个内部类来提供一种按名字对这些对象进行排序的方法 如何访问内部类中被重写的compareTo方法?我希望使用内部类,因为一旦按名字排序起作用,我将创建内部类以按其他属性排序 package listdemo; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class ListDemo {

我有一个person对象的数组列表,每个对象都有名字、姓氏和年龄。我想使用一个内部类来提供一种按名字对这些对象进行排序的方法

如何访问内部类中被重写的compareTo方法?我希望使用内部类,因为一旦按名字排序起作用,我将创建内部类以按其他属性排序

package listdemo;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ListDemo {
    public static void main(String[] args) {

        List<Person> people = new ArrayList<>();

        people.add(new Person("Homer", "Simpson", 29));
        people.add(new Person("Mo", "Sizlak", 23));
        people.add(new Person("Bart", "Simpson", 22));
        people.add(new Person("Peter", "Griffin", 30));
        people.add(new Person("Joe", "Swanson", 27));

    }
}

包列表演示;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.List;
公共类列表演示{
公共静态void main(字符串[]args){
List people=new ArrayList();
添加(新人物(“荷马”、“辛普森”,29));
添加(新人物(“Mo”,“Sizlak”,23));
添加(新人物(“巴特”,“辛普森”,22));
添加(新人物(“彼得”、“格里芬”,30));
添加(新人物(“乔”,“斯旺森”,27));
}
}
包列表演示;
公共阶层人士{
私有字符串名;
私有字符串lastName;
私人互联网;
公众人物(字符串名、字符串名、整数){
this.firstName=firstName;
this.lastName=lastName;
这个。年龄=年龄;
//在初始化Person时创建内部类的实例
Person.CompareFirstName CompareFirstName=this.new CompareFirstName();
}
公共字符串getFirstName(){
返回名字;
}
public void setFirstName(字符串firstName){
this.firstName=firstName;
}
公共字符串getLastName(){
返回姓氏;
}
public void setLastName(字符串lastName){
this.lastName=lastName;
}
公共整数getAge(){
回归年龄;
}
公共无效设置(整数){
这个。年龄=年龄;
}
@凌驾
公共字符串toString(){
返回this.firstName+“”+this.lastName+“”+this.age;
}
类CompareFirstName实现了Comparable{
@凌驾
公共内部比较(个人比较人员){
System.out.println(“调用的方法的内部类比较”);
int difference=Person.this.firstName.compareTo(comparePerson.getFirstName());
收益差;
}
}
}
类比较名称

class compareFirstName implements Comparator<Person>{
@override
public int compareTo(Person p1,Person p2){
return p1.getFirstName().compareTo(p2.getFirstName());
}
}
类compareFirstName实现Comparator{
@凌驾
公共内部比较(人员p1、人员p2){
返回p1.getFirstName().compareTo(p2.getFirstName());
}
}
在主方法上,在上述类的实例上创建,并使用Collections类进行排序

compareFirstName c = new compareFirstName ();
List<Person> yourPersonList = new ArrayList<>();
.........................
Collections.sort(yourPersonList, c);
for(Person p : yourPersonList) {
  System.out.println(p.getFirstName()+","+p.getLastName()+","+p.getAge());
}
compareFirstName c=新的compareFirstName();
列出您的PersonList=new ArrayList();
.........................
Collections.sort(yourPersonList,c);
for(个人p:您的个人列表){
System.out.println(p.getFirstName()+“,+p.getLastName()+”,“+p.getAge());
}
compareFirstName c = new compareFirstName ();
List<Person> yourPersonList = new ArrayList<>();
.........................
Collections.sort(yourPersonList, c);
for(Person p : yourPersonList) {
  System.out.println(p.getFirstName()+","+p.getLastName()+","+p.getAge());
}