你如何正确使用String中实现的compareTo方法?

时间:2013-02-17 07:19:17

标签: java string compareto

所以我创建了一个雇员对象和一个驱动程序。驱动程序包含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 ) );
    }

1 个答案:

答案 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>,并且您可以不使用上面的自定义比较器。这假设您只想根据名称进行比较。