java容器详解(一)array与Arrays

java容器详解(一)array与Arrays_第1张图片

java中的容器主要分为三种:长度(大小)固定的Array(即数组)、不固定长度的Collection与Map。(本文参考sun jdk 1.6的实现)

本章先介绍Array与Arrays。

  Array就是数组,也就是长度固定的容器,一但创建了这个对象就不能改变其大小(capacity)。

  Arrays是Array的工具类,其静态方法定义了对Array的各种操作:

    (1)asList方法:将Array包装成一个List,这个方法的实现只有一行代码:return new ArrayList<T>(a);虽然它 返回了一个新建的ArrayList,但如果对这个返回的List进行操作会影响到底层的Array数组。因为实现它的代码创建的ArrayList对象不是我们使用的java.util.ArrayList,而是在Arrays类内部定义的Nested Class:

java容器详解(一)array与Arrays_第2张图片

这个嵌套类的用数组作参数的构造函数只是传递了目标数组的引用,所以如果直接对这个返回的List进行操作会影响底层的Array(数组)。如果不想影响底层数组,只要新建个java.util.ArrayList对象就可以了:

Object[] array = {1,2,3};
List a = new ArrayList(Arrays.asList(array));

  (2)binarySearch用二分查找算法对目标数组进行查找。

  (3)copyOf对目标数组进行复制,通过消减或填充(数组数据类型的默认值)以使结果数组具有特定的长度。底层实现是System.arraycopy方法

  (4)copyOfRange对目标数组进行复制,结果数组是目标数组的一个区间。底层实现是System.arraycopy方法。

  (5)equals与deepEquals。判断两个数组是否相等,如果两个数组包含的对应位置上的元素相等或者两个数组同为null,equals返回true。deepEquals适用于多维数组。

  (6)fill填充用指定的值填充目标数组.

  (7)sort对目标数组进行排序。

  (8)toString与deepToString对目标数组转化为[element,...]形式的字符串,deepToString适用于多维数组。


你可能感兴趣的:(array,Arrays,JAVA容器)