我正在尝试按照对象的变量"name"对一个对象arraylist进行字母排序。下面是我编写的代码:
public void sortName()
{
int j;
for ( j = 0; j < theBatters.size()-1; j++)
{
System.out.println(theBatters.get(j).getName().compareToIgnoreCase(theBatters.get(j+1).getName()));
if ( theBatters.get(j).getName().compareToIgnoreCase(theBatters.get(j).getName()) > 0 )
{ // ascending sort
Collections.swap(theBatters, j, j+1);
j=0;
}
}
}
我相信问题与使用swap的那一行有关,因为当我在使用sortName()方法后打印出arraylist后,尽管这行返回了大于0的值,但所有元素仍然是按照原来的顺序排列的:
System.out.println(theBatters.get(j).getName().compareToIgnoreCase(theBatters.get(j+1).getName()));
compareToIgnoreCase
方法的if
语句中加入theBatter.get(j+1)
。 - Eli Sadoff