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的容量不会自动减小

ArrayList的容量相关推荐

  1. ArrayList的容量与长度

    ArrayList有一个有参构造方法 public ArrayList(int initialCapacity) {if (initialCapacity > 0) {this.elementD ...

  2. java arraylist指定容量_Java中的ArrayList的容量

    List接口的大小可变数组的实现.实现了全部可选列表操做,并容许包括 null 在内的全部元素. ArrayList继承于List接口,除继承过来的方法外,还提供一些方法来操做内部用来存储列表的数组的 ...

  3. 验证ArrayList插入同样数据使用指定容量和默认容量的效率

    2019独角兽企业重金招聘Python工程师标准>>> 验证ArrayList插入同样数据使用指定容量和默认容量的效率 之前在研究ArrayList源码的时候看到过一篇文章Java ...

  4. 2017.4.16 ArrayList初始默认容量(长度)

    版权声明:本文原创作者:一叶飘舟 作者博客地址:http://blog.csdn.net/jdsjlzx 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小.它总是至少等于 ...

  5. java中Array和ArrayList区别

    2019独角兽企业重金招聘Python工程师标准>>> 1)精辟阐述: 可以将 ArrayList想象成一种"会自动扩增容量的Array". 2)Array([] ...

  6. java new arraylist_Java中ArrayList用法详解

    七.其他 1.publicvirtualintCapacity{get;set;} 获取或设置ArrayList可包含的元素数. 2.publicvirtualintCount{get;} 获取Arr ...

  7. java1.8 indexes_java1.8源码之ArrayList源码解读

    文章目录 一.ArrayList概述1.1 ArrayList简介1.2 ArrayList数据结构 二.ArrayList源码分析2.1 ArrayList继承结构和层次关系2.2 类的属性2.3 ...

  8. arraylist 初始化_第一章 C#数据结构--数组和ArrayList

    数组是最通用的数据结构,它出现在几乎所有的编程语言里.在 C#语言中使用数组包括创建 System.Array 类型的数组对象,以及创建针对所有数组的抽象的基类型.Array 类提供了一套方法,这些方 ...

  9. C#非泛型集合类-ArrayList数组集合类

    ArrayList类可以视作是Array与Collection对象的结合,可以理解为Array的优化版本.该类既有数组的特征又有集合的特性,例如,既可以通过下标进行元素访问,对元素排序.搜索,又可以像 ...

最新文章

  1. 建立循环单链表(头插法)
  2. [T-ARA][HUE]
  3. C/S框架-WebService部署图
  4. shell中获取本机ip地址
  5. C#互操作性平台调用基础知识
  6. STM32F1笔记(九)通用定时器
  7. android calendarview 单月显示博客,android CalendarView
  8. 数据结构与算法(转)
  9. C++基础::mutable 关键字
  10. 发布自己的CocoaPods的步骤
  11. 电压放大倍数公式运放_三点出发,学习运算放大器不再“犯难”
  12. 奥维kml文件制作工具_如何将平面控制点导入Google Earth、奥维互动地图及手机奥维互动地图APP里面?...
  13. Eviews实现var模型
  14. Day8:盈利源泉是否可持续(1)
  15. k8s pod 污点
  16. RHCEansible静态主机清单
  17. 计算机无法检测更新失败怎么办,Windows更新错误解决方案
  18. 男人还是学点一技之长最靠谱
  19. Linux——磁盘分区与挂载
  20. Commit: Not all refs have been pushed.

热门文章

  1. LeetCode 1458. 两个子序列的最大点积(动态规划,类似编辑距离)
  2. C++类对象排序operator重载操作
  3. LeetCode 443. 压缩字符串(双指针)
  4. hal库开启中断关中断_STM32对HAL库的定时器中断
  5. afreecatv 回放下载_行车记录仪怎么看回放?行车记录仪停车后能自动录像吗
  6. Powerbi实战--常用新建表代码(单位切换,日期表)
  7. python展开 c函数中的宏预处理_C 语言常用的预处理-宏函数
  8. 论文浅尝 - ACL2020 | 用于多媒体事件提取的跨媒体结构化公共空间
  9. 论文浅尝 - ICLR2020 | Abductive Commonsense Reasoning
  10. CCKS 2019 | 百度 CTO 王海峰详解知识图谱与语义理解