在我正在阅读的这本书中(Head )指出,当我调用Collections.sort(myList) (其中myList是一个ArrayList<Song>对象,Song类实现了Comparable<Song>接口)时,将在一个Song对象上调用compareTo()方法,将这个Song传递给另一个Song的引用。
我只是不知道它是如何传递给不同Song的引用的,它怎么知道不同的引用呢?
发布于 2010-12-04 20:00:31
它从ArrayList中抓取一对歌曲,并将其中一首传递给另一组的.compareTo。
发布于 2010-12-04 20:04:21
假设没有Collection这样的东西,您必须从头开始编写自己的sort()方法。让我们用(愚蠢的慢,但容易理解)气泡排序算法来尝试它。一般来说,这看起来是这样的:
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]不能工作。您需要一个函数来比较这两个对象,并确定哪个对象更大。因此,实际代码看起来如下:
if (myList[i].compareTo(myList[j]) < 0) {这里有两个Song对象:调用方法的对象(myList[i])和作为参数传递的对象。
发布于 2010-12-04 20:01:18
它从列表中获取第一首歌,获取第二首,并调用song1.compareTo(song2),其中song1是第一首歌,song2是第二首。您可能希望手动实现任何排序算法。
https://stackoverflow.com/questions/4355523
复制相似问题