方法
public static int binarySearch(Object[] a, Object key)
通过数组参数在其执行导航所述阵列类的a
所述的binarySearch算法和转换元件以下a
入Comparable
并调用compareTo(key)
,直到它找到一个匹配或运行的可能性进行。
但是,我对实现感到困惑,如果是这种情况,该方法总是将元素强制转换为Comparable
,并且ClassCastException
如果遇到未实现的元素,则会抛出a Comparable
,对于API用户而言,该方法是否更清楚将仅考虑数组元素的比较器,而不考虑键的比较器,通过防止在数组类型与Comparable不兼容的情况下进行调用来进行编译,从而提高安全性,并且在以下情况下更有效地执行该方法被定义为
public static int binarySearch(Comparable[] a, Object key)
?将第一个参数定义为Object数组有什么好处?
编辑我发布问题后才看到它,并且已经回答了,但是这里有一篇相关的文章:为什么Arrays.sort采用Object []而不是Comparable []?他们声明如果该方法采用参数(Comparable [],Object),则无法在没有“重新分配”的情况下将Object []类型的数组传递给该方法,这也是很昂贵的。
请参阅为什么Arrays.sort使用Object []而不是Comparable []?。问题在于,这将对声明为Object []类型的数组造成问题,即使它们仅包含Comparables。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句