日志文章

2019-12-17 aflfte2011

数组的拷贝

package com.aflfte.array;
/**
 * 数组的拷贝
 * @author root
 *
 */
public class TestArrayCopy {
    public static void main(String[] args) {
        //testBasicCopy2();
        String[] str= {"阿里","京东","淘宝","百度","腾讯"};
        //removeElment(str, 2);
        String[] str2= {"新浪","谷歌","奇虎"};
        //extendRange("360", str, 5);
        extendArray(str2, str, 2);
        
    }
    public static void testBasicCopy() {
        String[] s1= {"aa","bb","cc","dd","ee"};
        String[] s2=new String[10];
        //数组拷贝(源数组,起始位,目标数组,插入位置,拷贝数量)
        System.arraycopy(s1, 2, s2, 6, 3);
        for(int i=0;i<s2.length;i++) {//打印数组
            System.out.println(i+"--"+s2[i]);
        }
    }
    //从数组删除某个元素(本质上还是数组的拷贝操作)
    public static void testBasicCopy2() {
        String[] s1= {"aa","bb","cc","dd","ee"};
        //String[] s2=new String[5];
        //数组拷贝(源数组,起始位,目标数组,插入位置,拷贝数量)
        System.arraycopy(s1, 3, s1, 2, 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[] removeElment(String[] s,int index) {
        System.arraycopy(s, index+1, s, index, s.length-index-1);
        //System.out.println(index);
        s[s.length-1]=null;
        for(int i=0;i<s.length;i++) {
            System.out.println(s[i]);
        }
        return s;
    }
    //数组扩容(本质上是定义一个更大的数组然后把当前数组拷贝到新数组当中
    public static void extendRange(String str,String[] s,int index) {//插入一个元素
        if(index>0||index<=s.length) {
        String[] s3=new String[s.length+1];//实现扩容
        if(index>1) {//判断插入位置如果大于1
        System.arraycopy(s, 0, s3, 0, index);//
        //s[index]=str;
        System.arraycopy(s, index, s3, index+1, s.length-index);
        s3[index]=str;
        }else {
            s3[index-1]=str;
            System.arraycopy(s, index-1, s3, index, s.length-index+1);
        }
        for(int i=0;i<s3.length;i++) {
            System.out.println(s3[i]);
        }
        }
    }
    //在数组中插入数组
    public static void extendArray(String[] str,String[] s,int into) {
        String[] s2=new String[s.length+str.length];
        if(into>0||into<=s.length) {
            if(into>1) {
                System.arraycopy(s, 0, s2, 0, into);
                System.arraycopy(str, 0, s2, into, str.length);
                System.arraycopy(s, into, s2, str.length+into, s.length-into);
            }else {
                System.arraycopy(str, 0, s2, 0, str.length);
                System.arraycopy(s, 0, s2, str.length, s.length);
            }
            for(int i=0;i<s2.length;i++) {
                System.out.println(s2[i]);
            }
        }
    }
}

« Arrays工具类的使用 | String的常用方法»