package day01;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Demo03 {
public static void main(String[] args) {
Scanner r = new Scanner(System.in);
int n = r.nextInt();
PersonSortable2 s[] = new PersonSortable2[n];
for(int i=0;i<n;i++){
String name = r.next();
int age = r.nextInt();
s[i] = new PersonSortable2(name,age);
}
Arrays.sort(s,new NameComparator());
System.out.println("NameComparator:sort");
for (PersonSortable2 i:s){
System.out.println(i);
}
Arrays.sort(s,new AgeComparator());
System.out.println("AgeComparator:sort");
for(PersonSortable2 i:s){
System.out.println(i.toString());
}
System.out.println(Arrays.toString(NameComparator.class.getInterfaces()));
System.out.println(Arrays.toString(AgeComparator.class.getInterfaces()));
}
}
class PersonSortable2{
public String name;
public int age;
public PersonSortable2(String name,int age){
this.name = name;
this.age = age;
}
/*toString()是Java中的一个方法,用于将对象转换为字符串表示形式。
* 这个方法通常被用于打印输出或者在日志中记录对象信息。
* 使用toString()方法可以方便地获取对象的字符串表示,而不是默认的对象引用值。
* 在实际开发中,我们经常需要重写toString()方法来自定义对象的字符串表示。
*/
public String toString(){
return name+"-"+age;
}
}
class NameComparator implements Comparator<PersonSortable2>{
public int compare(PersonSortable2 o1,PersonSortable2 o2){
if(o1.name.compareTo(o2.name)>0) return -1;
//o1.name>o2.name
else if(o1.name.compareTo(o2.name)<0) return -1;
//o1.name<o2.name
else //o1.name=o2.name
return o1.name.compareTo(o2.name);
}
}
class AgeComparator implements Comparator<PersonSortable2>{
public int compare(PersonSortable2 o1,PersonSortable2 o2){
if(o1.age<o2.age) return -1;
else return 1;
}
}