此问题已经在这里有了答案:
我很困惑此方法无法按预期工作:
public static int binarySearch(列表列表,T键比较器c)
这是我的代码
// Create a list
List<Domain> l = new ArrayList<Domain>();
l.add(new Domain(10, "quiz.geeksforgeeks.org"));
l.add(new Domain(70, "practice.geeksforgeeks.org"));
l.add(new Domain(30, "code.geeksforgeeks.org"));
l.add(new Domain(40, "www.geeksforgeeks.org"));
l.add(new Domain(20, "practice.geeksforgeeks.org"));
l.add(new Domain(21, "practice.geeksforgeeks.org"));
// Searching a domain with key value 10. To search
// we create an object of domain with key 10.
int index = Collections.binarySearch(l,
new Domain(31, null),new Comparator<Domain>()
{
public int compare(Domain u1, Domain u2)
{
return u1.getId().compareTo(u2.getId());
}
});
System.out.println("Found at index " + index);
它返回-7给我,这是不正确的。从文档中说:“列表必须根据指定的比较器以升序排序”。此处的排序列表应为:Domain(10 ...,20,21,30,40,70我没看到为什么为-7?