我有一个类implements comparable
来比较并根据其中一个类变量对其实例数组进行排序。现在我希望能够使用Arrays.binarySearch
搜索此类对象的数组。为此,覆盖equals
方法是否足够?
答案 0 :(得分:4)
不,binarySearch
处理“或多或少”的比较,而不是平等比较。如果你正确地实现Comparable
,那么它一致地服从接口,特别是当项目相等时返回0,那应该是所需的全部。 (或者,您可以指定Comparator
。)
当然,必须在binarySearch
工作之前对阵列进行适当的排序......
答案 1 :(得分:0)
equals
不用于排序操作。相反,假设compareTo == 0
和equals == true
是同一个。
相反,你需要实现compareTo以在它们相等时返回0或者实现你自己的比较器。