asList(T… a)
String[] strArray = {"spring", "summer", "fall", "winter"};
List strList = Arrays.asList(strArray);
binarySearch(byte[] a, byte key)
binarySearch(byte[] a, int fromIndex, int toIndex, byte key)
byte a = 0
byte[] bArray = {4, 3, 2, 1}
Arrays.sort(bArray)
System.out.println("4在数组中的位置是" + Arrays.binarySearch(bArray, a))
System.out.println("4在数组中的位置是" + Arrays.binarySearch(bArray, 3, 4, a))
使用二分搜索法来搜索指定的 byte 型数组的范围,以获得指定的值。必须在进行此调用之前对范围进行排序(通过 sort(byte[], int, int) 方法)。如果没有对范围进行排序,则结果是不确定的。如果范围包含多个带有指定值的元素,则无法保证找到的是哪一个。
参数:
a - 要搜索的数组
fromIndex - 要搜索的第一个元素的索引(包括)
toIndex - 要搜索的最后一个元素的索引(不包括)
key - 要搜索的值
返回:
如果它包含在数组的指定范围内,则返回搜索键的索引;否则返回 (-(插入点) - 1)。插入点 被定义为将键插入数组的那一点:即范围中第一个大于此键的元素索引,如果范围中的所有元素都小于指定的键,则为 toIndex。注意,这保证了当且仅当此键被找到时,返回的值将 >= 0。
抛出:
IllegalArgumentException - 如果 fromIndex > toIndex
ArrayIndexOutOfBoundsException - 如果 fromIndex < 0 或 toIndex > a.length
对于byte\char\short\long\int是相似的
对于Object类型的数组:(如果范围包含不可相互比较的元素,例如,字符串和整数,则无法 根据其元素的自然顺序对范围进行排序,因此结果是不确定的。)
对于float和double数组:认为认为所有 NaN 值都是等效且相等的
// binarySearch(char[] a, char key)
// binarySearch(char[] a, int fromIndex, int toIndex, char key)
char c = 'a'
char[] charArray = {'a', 'b', 'c'}
Arrays.sort(charArray)
System.out.println("'a'的位置是" + Arrays.binarySearch(charArray, c))
System.out.println("'a的位置是" + Arrays.binarySearch(charArray, 0, 3, c))
// binarySearch(double[] a, double key)
// binarySearch(double[] a, int fromIndex, int toIndex, double key)
double d = 4.5
double[] doubleArray = {1.3, 4.5, 3.0, 1.1, 4.5}
Arrays.sort(doubleArray)
System.out.println("4.5的位置是" + Arrays.binarySearch(doubleArray, d))
System.out.println("4.5的位置是" + Arrays.binarySearch(doubleArray, 3, 4, d))
// binarySearch(float[] a, float key)
// binarySearch(float[] a, int fromIndex, int toIndex, float key)
float f = 3.6f
float[] floatArray = {(float) 3.6, (float) 1.1, (float) 2.2, (float) 3.6}
Arrays.sort(floatArray)
System.out.println("3.6的位置是" + Arrays.binarySearch(floatArray, f))
System.out.println("3.6的位置是" + Arrays.binarySearch(floatArray, 2, 3, f))
// binarySearch(int[] a, int key)
// binarySearch(int[] a, int fromIndex, int toIndex, int key)
int i = 5
int[] intArray = {1, 2, 3, 5, 7, 4}
Arrays.sort(intArray)
System.out.println("5的位置是" + Arrays.binarySearch(intArray, i))
System.out.println("5的位置是" + Arrays.binarySearch(intArray, 4, 5, i))
// binarySearch(long[] a, int fromIndex, int toIndex, long key)
// binarySearch(long[] a, long key)
long l = 5
long[] longArray = {1, 2, 3, 5, 7, 4}
Arrays.sort(longArray)
System.out.println("5的位置是" + Arrays.binarySearch(longArray, i))
System.out.println("5的位置是" + Arrays.binarySearch(longArray, 4, 5, i))
// binarySearch(Object[] a, int fromIndex, int toIndex, Object key)
// binarySearch(Object[] a, Object key)
String s1 = "hello1"
String s2 = "hello2564"
String[] strArr = new String[]{"h123", "h345", "h012"}
Arrays.sort(strArr)
System.out.println(s1.compareTo(s2))
System.out.println("h123的位置是"+Arrays.binarySearch(strArr,"h123"))
System.out.println("h123的位置是"+Arrays.binarySearch(strArr,0,2,"h123"))