List概述

List是一个列表结构抽象定义,有序的,可对其中每个元素的插入位置进行精确地控制,可以通过索引来访问元素,遍历元素。包括函数的有:添加元素,删除元素,判断是否包含元素等等重要函数。

 
ArrayList
概述
     ArrayList的底层数据结构是用数据结构实现得,申请的内存是连续得,访问数据比较快。添加元素时,如果JVM连续内存不足执行垃圾回收。添加元素大于数组大小,ArrayList会创建新数组并且老数组里元素复制到新数组中,然后添加新元素到最后一个元素后面。
 
类图
 

构造
实例化ArrayList对象时,并不知道要List的大小边界,此时可以使用一个无参数构造函数,ArrayList中有一个类型为Object[]的DEFAULTCAPACITY_EMPTY_ELEMENTDATA空数组,DEFAULTCAPACITY_EMPTY_ELEMENTDATA赋值给元素存储对象数组elementData。
 
 
若知道边界大小实例化ArrayList时,使用带初始容量initalCapacity的构造函数。initalCapacity>0时,数组长度为initalCapacity;initalCapacity=0,数组为一个空数组;initalCapacity<0,抛出IllegalArgumentException异常。见如下源码:
 
 
size变量
     指明ArrayList实例当前含有多少元素。
 
元素添加
     使用无索引的add函数进行说明。首先ensureCapacityInternal函数确认内部容量大小
 

ensureCapacityInternal 调用calculateCapacity函数计算容量大小。

 
 calculateCapacity函数功能计

最新文章

  1. Consul的一个更新:服务端节点故障后重连
  2. Analyzer报表结果行
  3. Find Minimum in Rotated Sorted Array II leetcode
  4. 在Linux命令行下令人惊叹的惊叹号(!)
  5. C# 动态执行批处理命令
  6. homework-02 &quot;最大子数组之和&quot;的问题进阶
  7. mybatis05 用户添加
  8. RSA实践指南
  9. PHP字符串常用操作
  10. UITableViewCell嵌套UITableView的正确姿势
  11. 个人对stm32ADC编程关键点的理解
  12. pat1003 迪杰斯特拉法和dfs求最短路
  13. Linux进程间通信(System V) --- 共享内存
  14. (2)HomeAssistant 参数配置
  15. stm32 中断号和中断处理函数建立关系
  16. Swift 静态派发和动态派发
  17. Codeforces 1053 C - Putting Boxes Together
  18. 浅析iOS程序设计模式(基于MVC)
  19. Java GC的原理
  20. Flume-NG一些注意事项(转)

热门文章

  1. Spring boot + mybatis + dubbo + zookeeper + mysql + mybatis-generator 一个小demo
  2. Python列表(list)所有元素的同一操作
  3. lightGBM gpu环境配置
  4. spring Boot 学习(八、Spring Boot与与监控管理)
  5. C# Mysql数据库备份、还原(MVC)
  6. APS.NET MVC + EF (02)---深入理解ADO.NET Entity Framework
  7. vs2017添加引用提示“找不到 Microsoft.VisualStudio.Shell.Interop.IVsReferenceManager 服务的实例”解决方案
  8. java 枚举示例
  9. 2019 找钢网java面试笔试题 (含面试题解析)
  10. (一)类型转换 is 和 as