標籤:
轉自:http://blog.csdn.net/somebodydie/article/details/8229343
- package com.jaky;
- import java.util.*;
- public class Quest {
-
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- String[] colors = {"blue","red","green","yellow","orange","black"};
-
- Arrays.sort(colors);
-
- int s2=Arrays.binarySearch(colors, "orange");
- int s3=Arrays.binarySearch(colors, "violet");
-
- System.out.println(s2+""+s3);
- }
-
- }
輸出結果為:
3-6
violet在 colors數組中不存在,一直很納悶為什麼s3會等於 -6
查看JDK API 才知道:
binarySearch
public static int binarySearch(byte[] a, byte key)
-
使用二分搜尋法來搜尋指定的 byte 型數組,以獲得指定的值。必須在進行此調用之前對數組進行排序(通過
sort(byte[]) 方法)。如果沒有對數組進行排序,則結果是不確定的。如果數組包含多個帶有指定值的元素,則無法保證找到的是哪一個。
-
-
參數:
-
a - 要搜尋的數組
-
key - 要搜尋的值
-
返回:
-
如果它包含在數組中,則返回搜尋鍵的索引;否則返回 (-(
插入點) - 1)。
插入點 被定義為將鍵插入數組的那一點:即第一個大於此鍵的元素索引,如果數組中的所有元素都小於指定的鍵,則為 a.length。注意,這保證了若且唯若此鍵被找到時,返回的值將 >= 0。
-
當找不到要搜尋的值時,返回 (-(
插入點) - 1),雖然不知道怎麼理解這個插入點,但是經過多次測試的結果表明,好像就是得到搜尋數組的長度的負值。
JAVA Arrays.binarySearch