数组扩容

import java.lang.reflect.Field;
import java.util.ArrayList;

public class ArrayListDemo {
    public static void main(String[] args) {
        ArrayList<Integer> list1 = new ArrayList<>();
        //获取容量
        Integer capacity = getCapacity(list1);
        int size = list1.size();
        System.out.println("list1的容量"+capacity);
        System.out.println("list1的大小"+size);
        System.out.println("------------------------");

        ArrayList<Integer> list2 = new ArrayList<>();
        list2.add(1);
        //获取容量,arraylist初始化容量是10
        capacity = getCapacity(list2);
        size = list2.size();
        System.out.println("list2的容量"+capacity);
        System.out.println("list2的大小"+size);
        System.out.println("------------------------");

        ArrayList<Integer> list3 = new ArrayList<>();
        //获取容量,arraylist初始化容量是10
        capacity = getCapacity(list3);
        for (int i = 0; i < 10 ; i++) {
            list3.add(i);
        }
        capacity = getCapacity(list3);
        size = list3.size();
        System.out.println("list3的容量"+capacity);
        System.out.println("list3的大小"+size);
        System.out.println("------------------------");

        ArrayList<Integer> list4 = new ArrayList<>();
        //获取容量,arraylist初始化容量是10
        capacity = getCapacity(list4);
        for (int i = 0; i < 11 ; i++) {
            list4.add(i);
        }
        capacity = getCapacity(list4);
        size = list4.size();
        System.out.println("list4的容量"+capacity);
        System.out.println("list4的大小"+size);
        System.out.println("------------------------");

        ArrayList<Integer> list5 = new ArrayList<>();
        //获取容量,arraylist初始化容量是10
        capacity = getCapacity(list5);
        for (int i = 0; i < 16 ; i++) {
            list5.add(i);
        }
        capacity = getCapacity(list5);
        size = list5.size();
        System.out.println("list5的容量"+capacity);
        System.out.println("list5的大小"+size);
        System.out.println("------------------------");
    }


    public static Integer getCapacity(ArrayList list){
        Integer length = null;
        Class clazz = list.getClass();
        Field field;
        try {
            field = clazz.getDeclaredField("elementData");
            field.setAccessible(true);
            Object[] object = (Object[]) field.get(list);
            length = object.length;
            return length;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return length;
    }

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容