Java二分查找已经排序的列表

标签 java list binary-search

我有一个使用ORDERED BY的数据库查询,并且相应的结果集被处理为自定义对象列表。

该对象类未实现 Comparable 。但是,它使用 ORDERED BY 中使用的相同字段覆盖 equals() 和 hashcode()

由于列表已经排序,如何使用排序字段作为键而不使用可比较或比较器对列表进行二分搜索?

最佳答案

一句话 - 你不能。至少 JDK 的二分查找是不行的。 ComparableComparator是java表达顺序的方式。不过,这不应该是一个问题。即使您无法更改数据类,您也可以随时使用自己的(匿名)Comparator:

int index = Arrays.binarySearch(myArray, 
                                myObject,
                                Comparator.comparing(MyClass::getSomeField));

关于Java二分查找已经排序的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41340875/

相关文章:

c++ - 在 STL 中使用返回索引进行二进制搜索?

java - jChart2D - TracePoint2D 的颜色

java - 检查字符串是否包含空格后的子字符串

java - 为什么 "variable might not have been initialized"会阻止编译?

list - Erlang:递归与列表

c# - 在排序列表中搜索值时如何节省 CPU 周期?

java - Play 应用程序配置未加载?

java - 我们可以像在本例中那样仅使用 List 及其大小来检查复杂的条件吗?

c - 在C中递归搜索链表

java - 使用两种不同的算法搜索排序列表以查找是否存在满足 X[i]=i 的索引 i