首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Comparable<T>接口

Java Comparable<T>接口
EN

Stack Overflow用户
提问于 2010-12-04 19:57:49
回答 4查看 1.8K关注 0票数 0

在我正在阅读的这本书中(Head )指出,当我调用Collections.sort(myList) (其中myList是一个ArrayList<Song>对象,Song类实现了Comparable<Song>接口)时,将在一个Song对象上调用compareTo()方法,将这个Song传递给另一个Song的引用。

我只是不知道它是如何传递给不同Song的引用的,它怎么知道不同的引用呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-12-04 20:00:31

它从ArrayList中抓取一对歌曲,并将其中一首传递给另一组的.compareTo

票数 1
EN

Stack Overflow用户

发布于 2010-12-04 20:04:21

假设没有Collection这样的东西,您必须从头开始编写自己的sort()方法。让我们用(愚蠢的慢,但容易理解)气泡排序算法来尝试它。一般来说,这看起来是这样的:

代码语言:javascript
复制
for (int i = 0; i < myList.length; i++) {
    for (int j = i; j < myList.length; j++) {
        if (myList[i] < myList[j]) {
            Song temp = myList[i];
            myList[i] = myList[j];
            myList[j] = temp;;
        }
    }
}

当然,myList[i] < myList[j]不能工作。您需要一个函数来比较这两个对象,并确定哪个对象更大。因此,实际代码看起来如下:

代码语言:javascript
复制
if (myList[i].compareTo(myList[j]) < 0) {

这里有两个Song对象:调用方法的对象(myList[i])和作为参数传递的对象。

票数 2
EN

Stack Overflow用户

发布于 2010-12-04 20:01:18

它从列表中获取第一首歌,获取第二首,并调用song1.compareTo(song2),其中song1是第一首歌,song2是第二首。您可能希望手动实现任何排序算法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4355523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档