title: JavaArrayCopy方法
date: 2020-03-23 16:43:51
biog:https://www.huqifa.com/
tags:
- Java
categories:
- Java
ArrayCopy()
作为小白一直在使用for循环对数组进行复制,添加和删除,学习过程中发现ArrayCopy()方法在对数组进行删除,添加的时候更加高效,便利。
我们先来看一下底层源码:
public static native void arraycopy(Object src, int srcPos,
Object dest, int destPos,
int length);
/**
* Returns the same hash code for the given object as
* would be returned by the default method hashCode(),
* whether or not the given object's class overrides
* hashCode().
* The hash code for the null reference is zero.
*
* @param x object for which the hashCode is to be calculated
* @return the hashCode
* @since 1.1
* @see Object#hashCode
* @see java.util.Objects#hashCode(Object)
*/
src:要复制的数组(原数组)
srcPos:复制源数组的起始位置
dest:目标数组
destPos:目标数组的下标位置
length:要复制的长度
直观的说就是:
- Arraycopy(被复制的数组, 从第几个元素开始复制, 要复制到的数组, 从第几个元素开始粘贴, 一共需要复制的元素个数);
使用ArrayCopy()直接复制数组
public class TestArrayCopy {
public static void main(String[] args) {
String[] s1 = {"aa","bb","cc","dd","ee"};
String[] s2 = new String[10];
System.arraycopy(s1,1,s2, 1, 3);
for (int i = 0; i < s2.length; i++) {
System.out.println(i+"--"+s2[i]);
}
}
}
- 通过Arraycopy()方法,把s1数组第一个位置复制到s2第一个位置中,复制长度3.
使用ArrayCopy()删除数组中的蔡徐坤
给定一个明星数组,我们的目标是删除蔡徐坤。
public class TestArrayCopy {
public static void main(String[] args) {
String[] s = {"胡歌","彭于晏","蔡徐坤","周润发","周星驰"};
removeElement(s, 3);
}
public static String[] removeElement(String[] s,int index) {
System.arraycopy(s,index,s,index-1,s.length-index);
s[s.length-1] = null;
for (int i = 0; i < s.length; i++) {
System.out.println(i+"--"+s[i]);
}
return s;
}
}
通过对数组进行自身的复制,我们成功的把蔡徐坤删除。