当前位置: 首页 > 面试题库 >

为什么Java类应实现可比性?

虞滨海
2023-03-14
问题内容

为什么Comparable使用Java ?为什么有人Comparable在课堂上实施?你需要实现可比性的真实示例是什么?


问题答案:

这是一个真实的例子。请注意,它String也实现Comparable

class Author implements Comparable<Author>{
    String firstName;
    String lastName;

    @Override
    public int compareTo(Author other){
        // compareTo should return < 0 if this is supposed to be
        // less than other, > 0 if this is supposed to be greater than 
        // other and 0 if they are supposed to be equal
        int last = this.lastName.compareTo(other.lastName);
        return last == 0 ? this.firstName.compareTo(other.firstName) : last;
    }
}

后来..

/**
 * List the authors. Sort them by name so it will look good.
 */
public List<Author> listAuthors(){
    List<Author> authors = readAuthorsFromFileOrSomething();
    Collections.sort(authors);
    return authors;
}

/**
 * List unique authors. Sort them by name so it will look good.
 */
public SortedSet<Author> listUniqueAuthors(){
    List<Author> authors = readAuthorsFromFileOrSomething();
    return new TreeSet<Author>(authors);
}


 类似资料:
  • 问题内容: Java新手。在Android应用程序上工作时进行学习。我正在实现一个Comparator来对文件列表进行排序,而android docs 说一个Comparator应该实现Serializable: 建议比较器实现可序列化。 这是这里的Serializable接口。 我只想对文件列表进行排序。我为什么要实施此方法,或者为什么对任何比较器都应采用该方法? 问题答案: 这不仅是Andro

  • 重写Compariable接口的compareTo()方法的最佳方法是什么?此外,当我们可以编写自己的compareTo()方法而无需实现时,为什么还要实现可比较的接口呢。以以下座椅类别为例: 尽管我们没有实现可比接口,但上述工作仍然有效,那么我们为什么要实现它呢?

  • 问题内容: 我已经阅读了许多关于Java的新手问题,发现令人困惑的是,没有人真的说过是清理资源的不可靠方法。我看到有人评论说他们用它来清理,这确实很吓人,因为要保证关闭的唯一方法就是最终实现。 我没有在CS上学,但是近十年来我一直在用Java专业编程,而且从未见过有人在生产系统中实现过。这仍然并不意味着它没有用途,或者与我一起工作的人都在正确地做它。 所以我的问题是,存在哪些用例无法通过语言中的其

  • 所以我正在学习Comparator和Comparable,我有以下问题。我有一门课: 另一个类Name实现了可比较的,在构造函数中有两个String。我不完全理解的是比较器的功能,我读过Java留档,我知道它用于对元素进行不同的排序,而不改变我的例子中的名称类它也可以在某些情况下允许空值,但是这个我的类构造函数中的声明工作正常,我根本不需要在PhoneBook类中实现比较器接口: 并实现了我希望它

  • 问题内容: 我正在研究Go中一个简单的链表实现,以进行学习。元素的定义如下: 如您所见,Value可以是满足空接口的任何值。现在,作为一项新功能,我要进行创建,以便在将新元素插入列表时,它以排序方式插入-每个元素将是<=下一个元素。 为了做到这一点,我编写了以下方法: 编译器抱怨这是公平的。因此,我知道在Element typedef中,我应该将Value限制为可以使用运算符进行比较的类型。我在研

  • 我被这个概念困住了。 这是我在一个站点上看到的解释的一部分: 隐藏实现 我是这样想象的: 库客户机是否知道这个实现有什么区别?