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);
}


}}

解决方案 »

  1.   

    首先排序结果其实是正确的,按照saved做升序处理
    其次你说的排序乱码,是应为你for(BankAccount b : asd)
    {
    System.out.println(b);
    }这段代码打印的是BankAccount对象,会调用该对象的toString方法,在没重写该方法的时候,该方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于: 
    getClass().getName() + '@' + Integer.toHexString(hashCode())