1. 程式人生 > >關於binarySearch返回值為負數

關於binarySearch返回值為負數

        額。。。說過的要更新blog呢。。。

蛋疼的暑假,馬上大四了,結果學校組織我們參加了2個月的實訓。弱弱的說一句,別人都開學了,我還沒放學。

今天遇到了一個以前沒遇到過的問題,我就不用我拙計的語文水平描述了,請看程式碼:

import java.util.*;
public class Test {
	public static void main(String[] args) {
		String[] colors ={"blue","red","green","yellow","orange"};
		Arrays.sort(colors);
		int num1 = Arrays.binarySearch(colors, "green");
		int num2 = Arrays.binarySearch(colors, "gray");
		System.out.println(num1+" "+num2);
	}
}

輸出結果是:1  -2

       “1” : 排序後,字串“green”的下標。

       我腦袋裡產生一個大大的問號“?”

        這個-2是怎麼產生的?

API如是說:

引數:
a - 要搜尋的陣列
key - 要搜尋的值
返回:
如果它包含在陣列中,則返回搜尋鍵的索引;否則返回 (-(插入點) - 1)插入點 被定義為將鍵插入陣列的那一點:即第一個大於此鍵的元素索引,如果陣列中的所有元素都小於指定的鍵,則為 a.length。注意,這保證了當且僅當此鍵被找到時,返回的值將 >= 0。
對此不是很理解,所以記錄下來。

相關推薦

關於binarySearch返回負數

        額。。。說過的要更新blog呢。。。 蛋疼的暑假,馬上大四了,結果學校組織我們參加了2個月的實訓。弱弱的說一句,別人都開學了,我還沒放學。 今天遇到了一個以前沒遇到過的問題,我就不用我拙計的語文水平描述了,請看程式碼: import java.util.*

關於函數返回指針類型的分析

三種 類型 常用 指針 動態內存 () 全局變量 動態 int 註意(原則):永遠不要返回一個局部變量的指針或引用(其實是隱式的指針),可以返回局部變量本身,因為函數執行完之後,將釋放分配給局部變量的存儲空間,局部變量只是臨時的存儲空間,此時,對局部變量的引用和地址就會返回

返回DataTable的數據,在MVC視圖裏的用法

ice tle per ble mode ldb pri shtml index 控制器裏的代碼如下: private MySqlDbHelper msh = new MySqlDbHelper(); public ActionResult

返回json字符串時 如何獲得其中的json數組

int str 數據 bsp i++ 格式 ++ time 如何      json數據格式 {"IPPORT":"192.168.0.12","time":"2017-04-05 09:12:06","oper":"01","data":[{"paramUnit":"℃"

c#中 命令copy 已退出,返回1

col .cn 文件 返回 copy nbsp spa round img 後期生成時間命令行,可以指定生成目錄,是否刪除.pdb文件 c#中 命令copy 已退出,返回值為1

ajax異步傳輸數據,return返回

fin 問題 type UNC html ces ++ AR http 今天在項目中遇到了一個問題,就是在定義了一個函數drawHtml(),本意是想在函數運行結束後,返回拼接的字符串,可是函數運行結束後始終返回的是undefined 有BIG的代碼: function

C++函式指標、指標函式、返回函式指標的函式淺談

C++函式指標、指標函式、返回值為函式指標的函式淺談 引言 函式指標、指標函式是C中重要而容易混淆的概念,博主將通過兩個例項來說明這兩個截然不同的概念。 而返回值為函式指標的指標函式就更難理解了,放在文章的最後來介紹。 函式指標 函式指標是一種特殊的 指標,它指向函式的入口。

解決windows下UDP網路資料接收時recvfrom時返回 -1 但是緩衝區buffer有資料的問題

引言 最近在windows下編寫UDP網路伺服器,用於接收來自Linux開發板傳送過來的資料,遇到返回值-1 但是接收buffer中資料完整,本文介紹除錯過程以及在除錯過程中思路和方法。 一 問題描述 windows作為UDP伺服器端,Linux下作為客戶端,windows下每次

sqlite3 設定返回字典形式

首先是官方的方法 # 匯入驅動 import sqlite3 def dict_factory(cursor, row): d = {} for index, col in enumerate(cursor.description): d[col[0

mybatis Mapper 中resultType使用方法及返回Map的寫法 mybatis學習(七)——resultType解析

  mybatis學習(七)——resultType解析 resultType是sql對映檔案中定義返回值型別,返回值有基本型別,物件型別,List型別,Map型別等。現總結一下再解釋 總結: resultType: 1、基本型別  :resultType=基本型別 2、Lis

呼叫介面獲取token時,返回{"desc":"CurTime is illegal","code":414}

原因:伺服器時間跟網路時間不同步!!! 即時通訊,第三方為網易雲介面:https://api.netease.im/nimserver/uer/create.action 呼叫介面獲取token時,返回值為{"desc":"CurTime is illegal",

14. 函式返回引用?

函式返回值可以是引用嗎? 當然可以,只是在函式返回引用的時候需要注意幾點。以下給出討論! 函式在返回值的時候,會產生一個臨時變數作為函式返回值的副本;而函式在返回引用的時候,不會產生副本!那麼既然是

oracle 返回遊標的儲存過程

先建立一個包 create or replace package MYPACKAGE as --定義包中的遊標變數 type empcursor is ref cursor; --定義包中的方法 procedure q

java.util.LinkedHashMap cannot be cast to com.*** resetTemplate的GET請求返回帶泛型的型別

原因:             resetTemplate的GET請求返回值為帶泛型的型別不可以直接使用,因為他內部封裝成了一個LinkedHashMap,所以我們直接用的時候就會報錯 解決:  

C++中的RVO優化,針對返回物件時臨時物件的優化

摘要: RVO (return value optimization) 和NRVO (named return value optimization) 是C++在處理一個函式返回類物件並將返回值賦給另一個物件時,為了減少拷貝構造次數以及析構次數而採用的一種編譯器優化技術。 當函式的返回值

4. 陣列int[] intArr = new int[]{5,9,3,7,2,6},寫出一個函式可根據傳參(引數需要獲取的陣列型別:1:正序排序陣列;2:倒序排序陣列;)來進行排序,返回int

4. 陣列int[] intArr = new int[]{5,9,3,7,2,6},寫出一個函式可根據傳參(引數為需要獲取的陣列型別:1:正序排序陣列;2:倒序排序陣列;)來進行排序,返回值為int陣

Android 動態程式碼改變margin負數

問題: 在程式碼裡想動態修改view的margin值,想改負數,結果發現只能設定正數 解決: LinearLayout.LayoutParams lp; //lp = new LinearL

返回指標的函式

# include <stdio.h>//引用函式庫 # include <stdlib.h> int a=1; int * point(){//定義返回型別為指標 re

form表單提交 request.getParameter返回null

在寫一個簡單的表單提交時,發現一個問題: 表單提交後,後臺使用request.getParameter獲取不到引數,返回值為null。 一步步除錯確定原因後,發現有個很迷惑人的點 index.html: web.xml: 發現原來action指向寫錯了,應該是firs

Java Servlet呼叫WebService返回null的問題

這幾天,這處理Jaave Servlet呼叫WebService的時候,碰到返回值為空的問題,但是,新建的Java專案,使用同樣的方法呼叫,缺能夠返回正確的值。 Servlet中的程式碼: package dbconn; import java.io.BufferedInputStream;