Java 如何正确使用字符串中实现的compareTo方法?
所以我创建了一个employee对象和一个驱动程序。驱动程序包含一个雇员的ArrayList,这个特殊的方法返回名字按字母顺序排在第一位的雇员 让我们将两名雇员添加到ArrayList“staff”中,并将其称为“a”和“z” 出于某种原因,当我希望它返回Employee“a”时,它总是返回Employee“z”。我是否正确使用了compareTo方法,还是完全使用了其他方法Java 如何正确使用字符串中实现的compareTo方法?,java,string,compareto,Java,String,Compareto,所以我创建了一个employee对象和一个驱动程序。驱动程序包含一个雇员的ArrayList,这个特殊的方法返回名字按字母顺序排在第一位的雇员 让我们将两名雇员添加到ArrayList“staff”中,并将其称为“a”和“z” 出于某种原因,当我希望它返回Employee“a”时,它总是返回Employee“z”。我是否正确使用了compareTo方法,还是完全使用了其他方法 public Employee first() { int guy = 0;
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 ) );
}
public Employee first()
{
int=0;
对于(intx=1;x
无需重新发明车轮。使用自定义比较器并使用集合
排序方法
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());
公共类NameComparator实现Comparator{
@凌驾
公共整数比较(员工o1、员工o2){
返回o1.getName().compareTo(o2.getName());
}
}
排序(yourArrayList,newNameComparator());
或者,您可以确保您的
Employee
类实现Comparable
,并且您可以不使用上面的自定义比较器。这假设您只希望根据名称进行比较。文档中说明了它的工作原理吗?您还没有向我们展示compareTo方法的实现为什么不在某个自定义比较器上对列表进行排序?为什么需要检查的instanceof
?