Java中数组的拷贝

Java中数组的拷贝_第1张图片

数组的拷贝

System类里也包含了一个 static void arraycopy ( object src, int srcpos, object dest, int destpos,int length)方法,该方法可以将src数组里的元素值赋给dest数组的元素,其中srcpos指定从src数组的第几个元素开始赋值,length参数指定将src数组的多少个元素赋给dest数组的元素。

通俗一点来说可以分为三步:
第一步:将src数组中的拷贝到dest数组中
第二部:int SrcPos 表示从哪儿开始拷贝 int destPos 表示拷贝到哪个位置
第三步: int length 表示要拷贝几个

//数组拷贝
public class ArrayCopy {
	public static void main(String[] args) {
		//ArrayCopy a = new ArrayCopy();
		//a.testBasicCopy2();
		
		String[] str = {"阿里","淘宝","QQ","京东","亚马逊"};
		//removeElement(str, 2);
		
		extendRange(str);
	}
	
	public static void testBasicCopy() {
		String[] s1 = {"aa","bb","cc","dd","ee"};
		String[] s2 = new String[10];
		System.arraycopy(s1,2,s2,6,3);
		
		for(String m:s2) {
			System.out.println(m);
		}
		
//		for(int i=0;i
//			System.out.println(i+"--"+s2[i]);
//		}
	}
	
	//测试从数组中删除某一个元素(本质上还是数组的拷贝)
	public static void testBasicCopy2() {
		String[] s1 = {"aa","bb","cc","dd","ee"};
		//String[] s2 = new String[10];
		System.arraycopy(s1,3,s1,3-1,s1.length-3);
		
		s1[s1.length-1] = null;
		
		for(int i=0;i<s1.length;i++) {
			System.out.println(i+"--"+s1[i]);
		}	
	}
	
	//删除数组中指定索引位置的元素,并将原数组返回
		public static String[] removeElement(String[] s,int index) {
				
			System.arraycopy(s,index+1,s,index,s.length-index-1);
			
			s[s.length-1] = null;
			
			for(int i=0;i<s.length;i++) {
				System.out.println(i+"--"+s[i]);
			}
			return s;
		}
		
  //数组的扩容(本质上是:先定义一个更大的数组,然后原数组内容原封不动拷贝到新数组中)
		public static String[] extendRange(String[] s1) {
			//String[] s1 = {"aa","bb","cc"}
			String[] s2 = new String[s1.length+10];
			System.arraycopy(s1,0,s2,0,s1.length);
			for(String temp:s2) {
				System.out.println(temp);
			}
			return s2;
		}
}

你可能感兴趣的:(Java)