溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

關(guān)于Java數(shù)組查詢的相關(guān)問(wèn)題及實(shí)例 原創(chuàng)

發(fā)布時(shí)間:2020-08-20 02:53:03 來(lái)源:腳本之家 閱讀:114 作者:司機(jī) 欄目:編程語(yǔ)言

         在做數(shù)組查詢的過(guò)程中,我們有時(shí)候會(huì)遇到一些問(wèn)題,下面就跟隨作者一起解答這些問(wèn)題。

         Arrays 類的 binarySearch() 方法,可使用二分搜索法來(lái)搜尋指定數(shù)組,以獲得指定對(duì)象。該方法返回要搜索元素的索引值。 binarySearch()方法提供了多種重載形式,用于滿足各種類型數(shù)組的查找需要。 binarySearch()方法有兩種參數(shù)類型。

        (1)binarySearch(Object[] a.Object key) 其中a 代表要所搜的數(shù)組,key 表示要搜索的值。如果key 包含在數(shù)組中,則返回搜索值的索引;否則返回-1或“-”(插入點(diǎn))。插入點(diǎn)是搜索鍵將要插入數(shù)組的那一點(diǎn),即第一個(gè)大于此鍵的元素索引。這里為什么有 index 的值為負(fù)數(shù),大家一定要注意理解。

        例1:查詢數(shù)組元素,實(shí)例代碼如下:

int arr[] = new int[] {4,25,10};  //創(chuàng)建并初始化數(shù)組
Arrays.sort(arr);  //將數(shù)組進(jìn)行排序
int index = Arrays.binarySearch(arr,0,1,8);

        上面的代碼中變量 index 的值是元素“8”在索引0~1內(nèi)的索引位置。由于在指定的范圍內(nèi)并不存在元素“8”,Index的值是“-”。如果對(duì)數(shù)組進(jìn)行排序,元素“8”應(yīng)該在25的前面,因此插入點(diǎn)應(yīng)該是元素25的索引值2,所以index 的值為-2。

        例2:實(shí)現(xiàn)查找元素 4  在數(shù)組中的索引位置。代碼:

import java.util.Arrays;

public class Example {
	public static void main(String[] args) {
		int ia[] = new int[] {3,8,9,4,1};
		Arrays.sort(ia);
		int index = Arrays.binarySearch(ia,4);
		System.out.println("4 的索引位置是:"+index);
	}
}

         運(yùn)行結(jié)果為:4 的索引位置是:2

       (2) binarySearch(Object[].a,int fromIndex,int toIndex,Object key) 該方法在指定的范圍內(nèi)檢索某一元素。a:要進(jìn)行檢索的數(shù)組;fromIndex:指定范圍的開(kāi)始處索引(包含);toIndex:指定范圍的結(jié)束處索引(不包含);key:要搜索的元素。在使用該方法前同樣要對(duì)數(shù)組進(jìn)行排序,來(lái)獲得準(zhǔn)確的索引值。

        例3:實(shí)現(xiàn)查找元素“77”在指定范圍的數(shù)組str 中的索引位置。代碼如下:

import java.util.Arrays;

public class Pakel {
	public static void main(String[] args) {
		String str[] = new String[] {"99","88","77","66"}; 
		Arrays.sort(str);
		int index = Arrays.binarySearch(str,0,2,"77");
		System.out.println(index);
	}
}

        運(yùn)行結(jié)果為:1

        注意:如果指定的范圍大于或等于數(shù)組的長(zhǎng)度,則會(huì)報(bào)出 ArrayIndexOutOfBoundsException 異常。

        如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI