溫馨提示×

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

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

二分搜索法 Arrays.binarySearch遇到返回-1的問(wèn)題

發(fā)布時(shí)間:2020-06-28 13:40:13 來(lái)源:網(wǎng)絡(luò) 閱讀:1108 作者:拾荒者老大 欄目:開(kāi)發(fā)技術(shù)

對(duì)于幾個(gè)相應(yīng)控件習(xí)慣用二分法定位index,這樣最省事了

private static final int btnIds[] = {R.id.btn0 ,R.id.btn1 
		,R.id.btn2 ,R.id.btn3 ,R.id.btn4};
int index = Arrays.binarySearch(btnIds, v.getId());

之前一直沒(méi)問(wèn)題,直到今天調(diào)了下布局控件的上下順序,btn3和btn4移到上方,然后再測(cè)試就一直返回 -1 了.很郁悶.看R文件發(fā)現(xiàn)

        public static final int btn0=0x7f060071;
        public static final int btn1=0x7f060072;
        public static final int btn2=0x7f060073;
        public static final int btn3=0x7f06006f;
        public static final int btn4=0x7f060070;

btnIds不是按大小排序了.看到API里有一句

使用二分搜索法來(lái)搜索指定的 int 型數(shù)組,以獲得指定的值。必須在進(jìn)行此調(diào)用之前對(duì)數(shù)組進(jìn)行排序(通過(guò) sort(int[]) 方法)。如果沒(méi)有對(duì)數(shù)組進(jìn)行排序,則結(jié)果是不確定的。如果數(shù)組包含多個(gè)帶有指定值的元素,則無(wú)法保證找到的是哪一個(gè)。

試了下

Arrays.sort(btnIds);

二分搜索法 Arrays.binarySearch遇到返回-1的問(wèn)題點(diǎn)擊 btn3返回0,按大小給排序了.

好吧,只能改一下別的方法了...

向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