import java.util.Arrays;class BankAccount implements Comparable<Object>{
public int account;
public Integer saved;
public String name;
BankAccount(String name,int account,Integer saved){
this.name=name; this.account=account;
this.saved=saved;
}
public int compareTo(Object o){
if (o instanceof BankAccount){
if(saved>((BankAccount)o).saved)
{return 1;
}else if(saved<((BankAccount)o).saved){
return -1;
}else{
return 0;
}
}else{
//非TestComparable对象与之比较,则抛出异常
throw new ClassCastException("Can't compare");
}
}
}
public class come {
public static void main(String[] args) {
// TODO Auto-generated method stub
BankAccount[] asd = new BankAccount[3];
asd[0]= new BankAccount("zou",1233,6000000);
asd[1]= new BankAccount("zou",6435,7000000);
asd[2]= new BankAccount("zou",3737,5000000);
//排序前
System.out.println(Arrays.asList(asd)); //排序 Arrays.sort(asd); //排序后 for(BankAccount b : asd)
{
System.out.println(b);
}
}}
其次你说的排序乱码,是应为你for(BankAccount b : asd)
{
System.out.println(b);
}这段代码打印的是BankAccount对象,会调用该对象的toString方法,在没重写该方法的时候,该方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())