Java中,如何获取ArrayList集合容量

222 阅读1分钟

获取ArrayList容量实际就是获取ArrayList中存储数据的数组(Object[] elementData)长度,所以通过反射获取到elementData数组,然后得到该数组的length属性即可。方法如下:

@Test
public void m1() throws Exception {
    ArrayList<Object> list = new ArrayList<>();
    System.out.println("初始化后的容量大小:" + getArrayListLength(list)); // 0
    list.add(1);
    System.out.println("初始化后的容量大小:" + getArrayListLength(list)); // 10
}

//查看ArrayList集合容量方法 -- 反射
public int getArrayListLength(ArrayList list) throws Exception{
    //获取Class对象
    Class c = Class.forName("java.util.ArrayList");
    //映射Class对象c所表示类(即Arraylist)的属性
    Field field = c.getDeclaredField("elementData");
    //设置访问状态表示为true
    field.setAccessible(true);
    //返回指定对象上此 Field 表示的字段的值
    Object[] object = (Object[])field.get(list);
    return object.length;
}