日期:2014-05-20  浏览次数:20688 次

对象数组的比较
import   java.util.Arrays;
class   ArrayTest1
{
public   static   void   main(String[]   args)
{
Student[]   ss   =   new   Student[]{new   Student( "henry ",28),new   Student( "ben ",26),new   Student( "William ",38)};
Arrays.sort(ss);
for(int   i   =   0;i <ss.length;i++)
{
System.out.println(ss[i]);
}
}
}
class   Student   implements   Comparable
{
String   name;
int   age;
Student(String   name,int   age)
{
this.name   =   name;
this.age   =   age;
}
public   String   toString()
{
return   "name= "+this.name+ ",age= "+this.age;
}
public   int   compareTo(Object   o)
{
Student   s   =   (Student)o;
int   result;
result   =   name.compareTo(s.name);
/*int   result;
result   =   age> s.age   ?   1   :   (age==s.age   ?   0   :   -1);
if(result==0)
{
result   =   name.compareTo(s.name);
}*/
return   result;
}
}

我想让Student数据只根据NAME排序,以上的程序达不到想要的效果。但是根据AGE排序却没问题,不知道为什么

------解决方案--------------------
你的是根据字典顺序排列的
先排大写字母,再派小写字母,你把全部名字的第一个字母改成大写就搞定了。
------解决方案--------------------
恩,主要是名字首字母的大小写问题造成的
你排序的时候忽略大小写就ok了

稍微修改一下你Student类中的compareTo函数
把result = name.compareTo(s.name);这句换成result = name.compareToIgnoreCase(s.name);