package com.sf._02_arrays._04_copy;

import java.util.Arrays;

public class Test {

    /**
     * 复制数组
     * copyOf(arr,newLength);
     * @param args
     */
    public static void main(String[] args) {
        /**
         * 定义出来一个数组[1,2,3,4,5,6,7]
         * 把内容赋值到新的数组中  新的数组的长度为8
         *
         * 1 创建创建出来一个长度为5数组 Integer[] arr
         * 2 定义一个方法可以往数组当中添加元素内容(arr,addEle)
         * 3 最开是内容[null,null,null,null,null]
         *   第一次添加1  [1,null,null,null,null]
         *   当最后一次添加完[1,2,3,4,5]
         *
         * 4 当数组已经存满, 这个时候就需要把数组的内容拷贝到一个新的数组中, 新的数组的长度是老的数组长度2倍
         *   [1,2,3,4,5,null,null,null,null,null]
         */
        Integer[] arr = new Integer[5];
        arr = add(arr,1);
        System.out.println(Arrays.toString(arr));
        arr = add(arr,2);
        System.out.println(Arrays.toString(arr));
        arr = add(arr,3);
        System.out.println(Arrays.toString(arr));
        arr = add(arr,4);
        System.out.println(Arrays.toString(arr));
        arr = add(arr,5);
        System.out.println(Arrays.toString(arr));
        arr = add(arr,6);
        System.out.println(Arrays.toString(arr));

    }
    public static Integer[]  add(Integer[] arr,Integer ele){
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            Integer e = arr[i];
            if(e == null){
                arr[i] = ele;
                break;
            }else{
                count++;
            }
        }
        if(count == arr.length){
            Integer[] newArr = Arrays.copyOf(arr, arr.length * 2);
            for (int i = 0; i < newArr.length; i++) {
                Integer e1 = newArr[i];
                if(e1 == null){
                    System.out.println(i);
                    newArr[i] = ele;
                    break;
                }
            }
            return newArr;
        }
        return  arr;
    }
}
