ArrayList当容量放不下元素时,容量会自动扩大
那么如果把元素移除,容量会自动减小吗?
package zhousai;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
public class test {
public static void main(String[] args)
{
List<Integer> list = new ArrayList<Integer>();
int i;
System.out.println(getArrayListCapacity(list));
for(i=0;i<10;i++)
{
list.add(i);
}
System.out.println(getArrayListCapacity(list));
for(i=0;i<10;i++)
{
list.remove(0);
}
System.out.println(getArrayListCapacity(list));
}
public static int getArrayListCapacity(List<?> arrayList) {
Class<ArrayList> arrayListClass = ArrayList.class;
try {
Field field = arrayListClass.getDeclaredField("elementData");
field.setAccessible(true);
Object[] objects = (Object[])field.get(arrayList);
return objects.length;
} catch (NoSuchFieldException e) {
e.printStackTrace();
return -1;
} catch (IllegalAccessException e) {
e.printStackTrace();
return -1;
}
}
}
输出结果为:
0
10
10
所以,移除元素时,ArrayList的容量不会自动减小