所以我创建了一个雇员对象和一个驱动程序。驱动程序包含Employees的ArrayList,此特定方法返回名称首先按字母顺序排列的Employee。
让我们将两个Employees添加到ArrayList'staff'并称之为“a”和“z”。
出于某种原因,当我希望它返回Employee“a”时,它总是返回Employee“z”。我是否正确使用了compareTo方法,还是完全不同的其他方法?
public Employee first()
{
int guy = 0;
for ( int x = 1 ; x < staff.size() ; x ++ )
{
if ( staff.get( x -1 ) instanceof Employee && staff.get( x - 1 ).getName().compareTo( staff.get( x ).getName() ) < 0 )
guy = x - 1;
}
return ( (Employee) staff.get( guy ) );
}
答案 0 :(得分:2)
无需重新发明轮子。使用自定义比较器并使用Collections
排序方法。
public class NameComparator implements Comparator<Employee> {
@Override
public int compare(Employee o1, Employee o2) {
return o1.getName().compareTo(o2.getName());
}
}
Collections.sort(yourArrayList, new NameComparator());
或者,您可以确保Employee
类实现Comparable<Employee>
,并且您可以不使用上面的自定义比较器。这假设您只想根据名称进行比较。