Arrays的常用方法详解
sort()
待续…
parallelSort()
待续…
binarySearch()
待续…
equals()
待续…
fill()
待续…
copyOf()
@since 1.6
最终创建数组都是通过System.arraycopy()这个本地方法来创建的数组。
所以在说这个方法之前,我们先来分析一下System.arraycopy()这个方法;
public static native void arraycopy(Object src, int srcPos,
Object dest, int destPos,
int length);
该方法用了native关键字,说明调用的是其他语言写的底层函数。
参数解释:
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
方法作用:
将源数组的一段元素复制到目标数组的某一段位置上。
好了这个方法懂了,我们再回到copyOf()方法。
随便找一个方法的源代码出来看一下:
public static int[] copyOf(int[] original, int newLength) {
int[] copy = new int[newLength];
System.arraycopy(original, 0, copy, 0,
Math.min(original.length, newLength));
return copy;
}
参数解释:
original - 源数组
newLength - 规定新数组的长度
方法作用:
从源数组的位置0截取newLength 长度的数组。(截取出来的数组是新的数组)
System.arraycopy()与Arrays.copyOf()的区别:
- arraycopy()需要一个传入两个数组,作用更像是从一个数组往另外一个数组装载的过程
- copyOf()只需要传入一个数组,作用更像是以源数组为模板生产出另一个数组的过程。
- arraycopy()相较与copyOf()方法控制性更大。
记忆技巧:
将数组看成一条线段,copyOf是用尺子从头比着这条线段画出来一条新的线段,当然这条线段不能超过对比线段的长度。而arraycopy是可以从这条线段的任意位置开始画出新的一条线段,依然不能超过对比线段的长度。
copyOfRange()
@since 1.6
待续…
asList()
待续…
hashCode()
待续…
deepHashCode()
待续…
toString()
待续…
deepToString()
待续…