java开发:集合(一):数组扩容和元素删除

1.Arrays.copyOf()

我们知道java中创建数组的时候需要指定数组的长度,而且数组长度默认是不会改变
int[] arry = {1,2,3,4,5};
int[] arry1 = new int[5];

那我们有需求,需要当我们数组容量不够的时候可以进行扩容,Arrays.copyOf()方法可以对数组进行扩容,第一个参数是数据源,第二个参数是数组扩大的容量

  	int[] arry={1,2,3,4};
    arry= Arrays.copyOf(arry, (int) (arry.length*1.5));//数组扩大1.5倍
    System.out.println(arry.length);
    arry[3]=4;
    System.out.println(Arrays.toString(arry));

输出结果:
2019-12-02 16:30:02.565 12493-12493/? I/System.out: 6
2019-12-02 16:30:02.565 12493-12493/? I/System.out: [1, 2, 3, 4, 0, 0]

ArrayList底层就是使用这个方式实现动态数组。

2 System.arraycopy()

arraycopy()可以将源数组复制到目标数组
System.arrayCopy(Object srcArray,int srcPos,Object destArray ,int destPos,int length)

参数1. 原数组(要拷贝的数组)
参数2. 要复制的源数组的起始位置下标
参数3.目标数组
参数4.复制到目标数组的起始位置下标
参数5.复制长度

arrayCopy()实现数组元素删除

  String[] arry = {"1", "2", "3","4"};
        System.arraycopy(arry, 2, arry, 1, 2);
        for (Object i : arry) {
            Log.e("TAG", i.toString());
        }
 	arry[3]=null;

代码解读:从arry 数组下标为2的位置开始复制2个数据(复制3,4)到arry 的下标为1的位置。所以输出结果:
2019-12-02 17:09:43.591 13395-13395/com.example.recyclearapplication E/TAG: 1
2019-12-02 17:09:43.591 13395-13395/com.example.recyclearapplication E/TAG: 3
2019-12-02 17:09:43.592 13395-13395/com.example.recyclearapplication E/TAG: 4
2019-12-02 17:09:43.592 13395-13395/com.example.recyclearapplication E/TAG: 4
最后把最后的元素置null等待资源回收。

ArrayList底层就是使用这个方式实现输出remove。

你可能感兴趣的:(java开发)