Arrays.sort不能对自定义对象进行排序。现希望对自定义的PersonSortable
类的对象,使用Arrays.sort进行排序。
1.编写PersonSortable
类
属性:private name(String)
、private age(int)
有参构造函数:参数为name,age
toString函数:返回格式为:name-age
实现Comparable接口:实现先对name升序排序,如果name相同则对age进行升序排序
2.main方法中
- 首先输入n
- 输入n行name age,并创建n个对象放入数组
- 对数组进行排序后输出。
- 最后一行使用
System.out.println(Arrays.toString(PersonSortable.class.getInterfaces()));
输出PersonSortable所实现的所有接口
输入样例:
5
zhang 15
zhang 12
wang 14
Wang 17
li 17
输出样例:
Wang-17
li-17
wang-14
zhang-12
zhang-15
//这行是标识信息
import java.util.*;
class PersonSortable implements Comparable{
private String name;
private int age;
public PersonSortable() {
this.name = name;
this.age = age;
}
public PersonSortable(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name+"-"+age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int compareTo(Object o) {
PersonSortable per=(PersonSortable)o;
int x = this.name.compareTo(per.name);
if(x!=0){
return x;
}else{
if (this.age>per.age)
return 1;
else if(this.age<per.age)
return -1;
else
return 0;
}
}
}
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int count=Integer.valueOf(sc.nextLine());
ArrayList<PersonSortable> list=new ArrayList();
for (int i=0;i<count;i++){
String string[]=sc.nextLine().split(" ");
list.add(new PersonSortable(string[0],Integer.valueOf(string[1])));
}
Collections.sort(list);
for (PersonSortable p:list){
System.out.println(p);
}
System.out.println(Arrays.toString(PersonSortable.class.getInterfaces()));
}
}