gpt4 book ai didi

java - 通过覆盖 Arrays.sort() 对对象数组进行排序

转载 作者:行者123 更新时间:2023-11-29 05:32:24 25 4
gpt4 key购买 nike

看来我对“可比”有一些误解 - 我认为我可以通过制作 compareTo(Person person) 方法来覆盖 Arrays.sort() - 我到底错过了什么?

我认为 Arrays.sort 会采用我的 Person[] 并使用我的 compareTo(Person person) 方法对其进行排序?

如果我完全偏离轨道 - 有人可以将我推向正确的方向......吗?

import java.util.*;

public class Person implements Comparable<Person>{
protected String surname;
protected String givenName;

//Constructor for my "Person" objects
protected Person(String aSurname, String aGivenName){
surname=aSurname;
givenName=aGivenName;
}
public static void main(String[] args){
//A string of Person objects
Person[] arrayOfPersons=new Person[6];
arrayOfPersons[0]=new Person("Kangasniemi","Jerri");
arrayOfPersons[1]=new Person("Kangasniemi","Jukka");
arrayOfPersons[2]=new Person("Kangasniemi","Jessicka");
arrayOfPersons[3]=new Person("Kangasniemi","Johan");
arrayOfPersons[4]=new Person("Kangasniemi","Joakim");
arrayOfPersons[5]=new Person("Virtamo","Nina");
Arrays.sort(arrayOfPersons);
for (int i = 0; i < arrayOfPersons.length; i++) {
System.out.println(arrayOfPersons[i].toString());
}
}
@Override
public String toString(){
return givenName+" "+surname;
}
@Override
public int compareTo(Person person) {
String personOne="";
String personTwo="";
personOne=this.toString();
String[] personOneString=personOne.split(" ");
personTwo=person.toString();
String[] personTwoString=personTwo.split(" ");
if (personOneString[1]==personTwoString[1]) {
if (personOneString[0]==personTwoString[0]) {
return 0;
} else if(personOneString[0].compareToIgnoreCase(personTwoString[0])<0){
return -1;
} else{
return 1;
}
}else if(personOneString[1].compareToIgnoreCase(personTwoString[1])<0){
return -1;
}else{
return 1;
}
}
}

最佳答案

@Override
public int compareTo(Person person) {
int rv = this.givenName.compareToIgnoreCase(person.givenName);
if (rv != 0) return rv;
else return this.surname.compareToIgnoreCase(person.surname);
}

关于java - 通过覆盖 Arrays.sort() 对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20666582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com