java容器详解(一)array与Arrays

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

本章先介绍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: 工具

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

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

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

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

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

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

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

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

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

相关文章
相关标签/搜索