java扩容

1.数组的扩容

1.1 第一种方式

平平无奇直接按照下标赋值

    @Test
    void dilationArray() {
        int[] oldArr = {1,2,3,4};
        int[] nowArr = new int[7];

        for (int i = 0 ; i < oldArr.length ; i++){
            nowArr[i] = oldArr[i];
        }
        System.out.println(Arrays.toString(nowArr));//[1, 2, 3, 4, 0, 0, 0]
    }

1.2 第二种方式

使用System.arraycopy(原数组名,起始下标,新数组名,起始下标,复制长度)

    @Test
    void dilationArray2() {
        int[] oldArr = {1,2,3,4};
        int[] nowArr = new int[7];

        System.arraycopy(oldArr, 0, nowArr, 0, oldArr.length);
        System.out.println(Arrays.toString(nowArr));//[1, 2, 3, 4, 0, 0, 0]
    }

1.3 第三种方式

使用 util.Arrays 的copyOf(原数组名,新数组长度)

    @Test
    void dilationArray3() {
        int[] oldArr = {1,2,3,4};
        int[] nowArr = new int[7];

        nowArr = Arrays.copyOf(oldArr, nowArr.length);
        System.out.println(Arrays.toString(nowArr));//[1, 2, 3, 4, 0, 0, 0]
    }

2.集合的扩容

2.1 ArrayList

在j dk 8 之后,默认容量是 0 ,加数据后续初始化为 10 ,

底层是数组结构,

扩容增量:原容量的 0.5倍

线程不安全,查询速度快

add直接加数据就行,到容量底层就会自动帮你扩容

    @Test
    void dilationArrayList() {
        ArrayList arrayList = new ArrayList(2);
        arrayList.add("123");
        arrayList.add("123");
        arrayList.add("234");
        System.out.println(arrayList);//[123, 123, 234]
    }

2.2 Vector

默认容量为10,

底层是数组结构,

扩容增量:原容量的 1 倍,

线程安全,但速度慢

add直接加数据就行

    @Test
    void dilationVector() {
        Vector vec = new Vector(2);
        vec.add("123");
        vec.add("123");
        vec.add("234");
        System.out.println(vec);//[123, 123, 234]
    }

你可能感兴趣的:(java,扩容)