【问题标题】:How do you properly use the compareTo method implemented in String?如何正确使用 String 中实现的 compareTo 方法?
【发布时间】:2013-02-17 07:19:17
【问题描述】:

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

让我们在 ArrayList 'staff' 中添加两个员工,并称他们为“a”和“z”。

由于某种原因,当我期望它返回员工“a”时,它总是返回员工“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 ) );
    }

【问题讨论】:

  • 文档说明了它是如何工作的?
  • 你还没有向我们展示 compareTo 方法的实现
  • 为什么不在一些自定义比较器上对列表进行排序?为什么还要检查instanceof

标签: java string compareto


【解决方案1】:

无需重新发明轮子。使用自定义比较器并使用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&lt;Employee&gt; 并且您可以不使用上面的自定义比较器。这假设您只想根据名称进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 2019-01-08
    • 1970-01-01
    相关资源
    最近更新 更多