获取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;
}