我有一个使用ORDERED BY的数据库查询,并且相应的结果集被处理为自定义对象列表。
该对象类未实现 Comparable 。但是,它使用 ORDERED BY 中使用的相同字段覆盖 equals() 和 hashcode() 。
由于列表已经排序,如何使用排序字段作为键而不使用可比较或比较器对列表进行二分搜索?
最佳答案
一句话 - 你不能。至少 JDK 的二分查找是不行的。 Comparable
和Comparator
是java表达顺序的方式。不过,这不应该是一个问题。即使您无法更改数据类,您也可以随时使用自己的(匿名)Comparator
:
int index = Arrays.binarySearch(myArray,
myObject,
Comparator.comparing(MyClass::getSomeField));
关于Java二分查找已经排序的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41340875/