java.util.Arrays类能方便的操作数组,它所有的方法都是静态的。Java1.2为我们提供的。其中Java5和Java8都提供了更多增强方法。
Java有个命名习惯或者说是规范,后面加s的都是工具类,比如Arrays、Collections、Executors等等
备注:本博文基于JDK8讲解
有很多开发了很多年的人,只使用过它的asList方法去快速构建一个List,但其实它是非常强大的,可以很大程度上简化我们操作数组的方式。
Arrays的方法分类介绍
先看几张截图分类
有了这个分类,现在从上到家进行讲解(会进行归类):
asList:快速构建一个list
这个可能不需要我讲解,其实大家都会了。我这里贴出它的实现
public static <T> List<T> asList(T... var0) { return new Arrays.ArrayList(var0); }
private static class ArrayList<E> extends AbstractList<E> implements RandomAccess, java.io.Serializable {
它是自己内部实现的一个ArrayList,使用起来个ArrayList差不多。但是需要注意:注意:注意,它的长度不可变,不能调用remove方法,比如下面就报错:
public static void main(String[] args) { List<Integer> list = Arrays.asList(1, 2, 3); list.remove(1); //java.lang.UnsupportedOperationException }
备注:此处不能传null,否则包空指针异常
binarySearch:二分法查找,数组必须有序
使用二进制搜索算法来搜索指定的 int 型数组,以获得指定的值。
binarySearch()方法提供了多种重载形式,用于满足各种类型数组的查找需要,binarySearch()有两种参数类型。
必须在进行此调用之前对数组进行排序(sort 方法)。如果没有对数组进行排序,则结果是不明确的。如果数组包含多个带有指定值的元素,则无法保证找到的是哪一个。
public static void main(String[] args) { int a[] = new int[]{1, 3, 4, 6, 8, 9}; int x1 = Arrays.binarySearch(a, 5); int x2 = Arrays.binarySearch(a, 4); int x3 = Arrays.binarySearch(a, 0); int x4 = Arrays.binarySearch(a, 1); System.out.println(x1); //-4 不存在时从1开始(因为是有序的 所有有角标) System.out.println(x2); //2 System.out.println(x3); //-1 不存在时从1开始哦 所以值是-1 不是-0 System.out.println(x4); //0 存在时 从0开始 }
因为有这么多的限制,所以数组的查找我们其实用得还是比较少的