当输入未排序时,带有比较器的Collections.binarySearch()如何工作? [重复]

问题描述 投票:-2回答:1

我很困惑此方法无法按预期工作:

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?

java binary-search
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.