[英]Java SE 7 Arrays.binarySearch()
程序運行時可以打印的所有可能值是什么?
import java.util.*;
public class TestClass {
static String[] sa = { "a", "aa", "aaa", "aaaa" };
static { Arrays.sort(sa); }
public static void main(String[] args) {
String search = "";
if(args.length != 0) search = args[0];
System.out.println(Arrays.binarySearch(sa, search));
}
}
正確答案是從-5到3的任意數字。
我仍然不明白正確的答案。
有三種可能性。
1)如果數組中的所有元素都小於搜索關鍵字,則插入點為4,因此返回-5。
2)如果數組中的所有元素都大於搜索關鍵字,則插入點為0,因此返回-1。
3)如果數組中的任何元素與搜索鍵匹配,則返回的值應介於-5和-1之間。
那么如何返回從0到3的值呢?
那么如何返回從0到3的值呢?
如果search = "aaaa"
則輸出將為3
,因為這是方法binarySearch
返回的位置(索引)。 如果出現以下類似情況:
search = "aaa"
,輸出為2
search = "aa"
,輸出為1
search = "a"
,輸出為0
要理解這一點,請嘗試打印數組sa
的元素:
System.out.println(sa[0]); // index 0
System.out.println(sa[1]); // index 1
System.out.println(sa[2]); // index 2
System.out.println(sa[3]); // index 3
輸出:
a
aa
aaa
aaaa
來自javadoc
返回搜索鍵的索引(如果它包含在數組中); 否則,( - (插入點) - 1)。 插入點定義為鍵將插入到數組中的點:第一個元素的索引大於鍵,或者如果數組中的所有元素都小於指定鍵,則為a.length。
您有一個大小為4的數組。因此該元素可以位於索引0,1,2或3。
其他可能性是你的第1點和第2點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.