我想了解Collections.binarySearch如何在Java中工作。 我不太明白我得到的輸出。Collections.binarySearch如何工作?
public static void main(String args[]) {
// create arraylist
ArrayList<String> arlst=new ArrayList<String>();
arlst.add("A");
arlst.add("D");
arlst.add("C");
arlst.add("B");
arlst.add("E");
int index=Collections.binarySearch(arlst, "D", Collections.reverseOrder());
System.out.println(index);
}
}
此代碼的輸出爲-1。
而當元素已經在這個順序
arlst.add("D");
arlst.add("E");
arlst.add("C");
arlst.add("B");
arlst.add("A");
被插入,我得到0的結果。如果元素沒有找到,我認爲負數是一個結果。任何人都可以澄清我收到的結果嗎?
你知道二進制搜索一般是如何工作的嗎? – Tom
有關類jdk用法的所有有用信息通常是以下文檔: 「使用二分搜索算法在指定列表中搜索指定對象。該列表必須根據其元素的自然順序按升序排序(如通過sort(List)方法),如果它沒有排序,結果是未定義的。如果列表包含多個元素等於指定的對象,則不能保證哪個元素會被找到。「 – davidxxx
@davidh,你引用了錯誤的bynarySearch方法,但是OP使用了一個以Comparator作爲參數的引用 – aioobe