【发布时间】:2012-09-16 04:44:54
【问题描述】:
我仍然很擅长编程,并且在 Java 中对数组进行二进制搜索的语法遇到了问题。我正在尝试调用一个比较器方法(重载的“比较”方法),它存在于与我使用二进制搜索的类不同的类中。基本上我的目标是仅在数组中搜索存储的变量之一组成数组的对象。如果没有比较器,我将无法成功,因为我创建了一个“虚拟”对象来仅保存搜索所需的条件作为键。
这是我的二进制搜索代码:
Song searchSong = new Song(artistInput, artistInput, artistInput);
int search = Arrays.binarySearch(songs, searchSong, new compare<Song>());
这是我在一个单独的类中的重载比较器代码:
public int compare (Song firstSong, Song secondSong) {
return firstSong.getArtist().compareTo(secondSong.getArtist());
}
我确定这只是我缺少的一些简单的东西,但我还没有找到答案。我很感激任何帮助,如果需要更多细节,请告诉我。我知道二进制搜索的代码在当前形式下不起作用。
【问题讨论】:
-
1) 哪个是问题(编译错误/运行时错误/错误结果)? 2) 你的课程是否扩展
java.util.Comparator?和 3) Java 中的所有类名都以大写字母开头 -
抱歉,您的问题到底是什么?您可能是 stackoverflow 和编程的新手,但您确实意识到您必须提出问题,对吧?我猜你的意思是覆盖而不是重载,对吗?是的,除非 compare 是一个类,否则您提供的代码 sn-ps 将无法编译。在这种情况下,您应该用大写字母命名。这听起来可能很苛刻,但您需要先掌握基础知识,然后再开始使用二进制搜索等 API。
-
比较是一种方法,而不是一个类。对不起,如果我不清楚。是的,我的意思是覆盖,而不是超载。