import java.util.Arrays; /** * Created by ccc on 16-4-27. */ public class Test { public static void main(String arg[]) { int[] a = new int[]{1, 2, 4}; int[] b = new int[]{1,2,4,5, 6, 9}; Arrays.sort(a); Arrays.sort(b); int len = a.length; for (int i = 0; i < len; i++) { if (Arrays.binarySearch(b, a[i]) >= 0) { System.out.println(b[i]); } } } }
Arrays.binarySearch();的用法。
public static int binarySearch(Object[] a,Object key)
使用二分搜索法来搜索指定数组,以获得指定对象。在进行此调用之前, 必须根据元素的自然顺序对数组进行升序排序(通过 sort(Object[]) 方 法 )。如果没有对数组进行排序,则结果是不确定的。(如果数组包 含不可相互比较的元素(例如,字符串和整数),则无法 根据其元素的自 然顺序对数组进行排序,因此结果是不确定的。)如果数组包含多个等于 指定对象的元素,则无法保证找到的是哪一个。
参数:
a - 要搜索的数组
key - 要搜索的值
返回:
如果它包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)
。插入点 被定义为将键插入数组的那一点:即第一 个大于此键的
元素索引,如果数组中的所有元素都小于指定的键,则为 a.length。注意 ,这保证了当且仅当此键被找到时,返回的值将 >= 0。
否则返回 (-(插入点) - 1)这句话要注意:要是查询的的值小于数组里面
的最小值那么结果(-(0)-1结果就是-1),如果查询的 值大于数组里面的 最大值。那么结果就是(-(它的索引值)-1结果就是-(1+索引值))
抛出:
ClassCastException - 如果搜索的键不能与数组的元素进行比较。