Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何正确使用字符串中实现的compareTo方法?_Java_String_Compareto - Fatal编程技术网

Java 如何正确使用字符串中实现的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;

所以我创建了一个employee对象和一个驱动程序。驱动程序包含一个雇员的ArrayList,这个特殊的方法返回名字按字母顺序排在第一位的雇员

让我们将两名雇员添加到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 ) );
    }
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