關(guān)于Java數(shù)組查詢(xún)的相關(guān)問(wèn)題及實(shí)例 原創(chuàng)
在做數(shù)組查詢(xún)的過(guò)程中,我們有時(shí)候會(huì)遇到一些問(wèn)題,下面就跟隨作者一起解答這些問(wèn)題。
Arrays 類(lèi)的 binarySearch() 方法,可使用二分搜索法來(lái)搜尋指定數(shù)組,以獲得指定對(duì)象。該方法返回要搜索元素的索引值。 binarySearch()方法提供了多種重載形式,用于滿(mǎn)足各種類(lèi)型數(shù)組的查找需要。 binarySearch()方法有兩種參數(shù)類(lèi)型。
(1)binarySearch(Object[] a.Object key) 其中a 代表要所搜的數(shù)組,key 表示要搜索的值。如果key 包含在數(shù)組中,則返回搜索值的索引;否則返回-1或“-”(插入點(diǎn))。插入點(diǎn)是搜索鍵將要插入數(shù)組的那一點(diǎn),即第一個(gè)大于此鍵的元素索引。這里為什么有 index 的值為負(fù)數(shù),大家一定要注意理解。
例1:查詢(xún)數(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ì)本站的支持!
- Java封裝數(shù)組之添加元素操作實(shí)例分析
- 使用java數(shù)組 封裝自己的數(shù)組操作示例
- JAVA基于數(shù)組實(shí)現(xiàn)的商品信息查詢(xún)功能示例
- java~springboot~ibatis數(shù)組in查詢(xún)的實(shí)現(xiàn)方法
- java中刪除 數(shù)組中的指定元素方法
- Java中高效的判斷數(shù)組中某個(gè)元素是否存在詳解
- java實(shí)現(xiàn)向有序數(shù)組中插入一個(gè)元素實(shí)例
- java 刪除數(shù)組元素與刪除重復(fù)數(shù)組元素的代碼
- Java編程實(shí)現(xiàn)統(tǒng)計(jì)數(shù)組中各元素出現(xiàn)次數(shù)的方法
- Java數(shù)組,去掉重復(fù)值、增加、刪除數(shù)組元素的方法
- java去除已排序數(shù)組中的重復(fù)元素
- Java封裝數(shù)組實(shí)現(xiàn)在數(shù)組中查詢(xún)?cè)睾托薷脑夭僮魇纠?/a>
相關(guān)文章
Mybatis-Plus中and()和or()的使用與原理詳解
最近發(fā)現(xiàn)MyBatisPlus還是挺好用的,下面這篇文章主要給大家介紹了關(guān)于Mybatis-Plus中and()和or()的使用與原理的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09服務(wù)器CPU高居不下,JAVA線(xiàn)程占用排查方式
這篇文章主要介紹了服務(wù)器CPU高居不下,JAVA線(xiàn)程占用排查方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09Java實(shí)現(xiàn)堆排序(大根堆)的示例代碼
這篇文章主要介紹了Java實(shí)現(xiàn)堆排序(大根堆)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10SpringCloud-Nacos服務(wù)注冊(cè)與發(fā)現(xiàn)方式
這篇文章主要介紹了SpringCloud-Nacos服務(wù)注冊(cè)與發(fā)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07Json傳輸出現(xiàn)中文亂碼問(wèn)題的解決辦法
最近遇到一個(gè)問(wèn)題,就是將中文消息以json格式推給微信服務(wù)器時(shí),收到的消息是亂碼,所以下面這篇文章主要給大家介紹了關(guān)于Json傳輸出現(xiàn)中文亂碼問(wèn)題的解決辦法,需要的朋友可以參考下2023-05-05基于Log4j2阻塞業(yè)務(wù)線(xiàn)程引發(fā)的思考
這篇文章主要介紹了基于Log4j2阻塞業(yè)務(wù)線(xiàn)程引發(fā)的思考,基于很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12Springmvc異常映射2種實(shí)現(xiàn)方法
這篇文章主要介紹了Springmvc異常映射2種實(shí)現(xiàn)方法以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。,需要的朋友可以參考下2020-05-05SpringBoot2.x 整合Spring-Session實(shí)現(xiàn)Session共享功能
這篇文章主要介紹了SpringBoot2.x 整合Spring-Session實(shí)現(xiàn)Session共享功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07SpringBoot + FFmpeg實(shí)現(xiàn)一個(gè)簡(jiǎn)單的M3U8切片轉(zhuǎn)碼系統(tǒng)
使用大名鼎鼎的ffmpeg,把視頻文件切片成m3u8,并且通過(guò)springboot,可以實(shí)現(xiàn)在線(xiàn)的點(diǎn)播。2021-05-05