Arraylist简述

ArrayList是一个线性表,同时ArrayList在储存空间上是连续的,因此也是一个顺序表.

1.

ArrayLIst的底层是一个数组来实现的,

在这里插入图片描述

但我们实例化它时,此时并没有为这个数组申请空间,只有在为其添加数据时才会为其开辟一个数组长度为10的数组;

在这里插入图片描述
在这里插入图片描述

此时我们调用其add()方法为其添加元素

add方法中右调用了其他的方法,我们来一一解释

在这里插入图片描述
这个方法 此时size表示当前的数据量,size+1表示的是如果添加当前数据的数据量

接着我们继续开这个方法的具体实现

在这里插入图片描述

不多说接着看(注意看方法名,容易混)

在这里插入图片描述
在这里插入图片描述

接下来就是为数组开辟空间的时候了在这里插入图片描述
最后就是拷贝数组,上述中我不明白的是为什么最后先和MAX_ARRAY_VALUES比较,而不是直接和integer的最大值进行比较,希望大家指正.

2.

接下来看看ArrayList中的一些方法:
构造方法:

在这里插入图片描述

除了最开始的使用无参来实例,也可使用带参数的来实例,分别是使用一个装有指定类型或其子类的容器作为参数构建,还有指定数组一开始的容量,这里就不细看了,使用一下就好了:

在这里插入图片描述

打印结果如图,说明arrayLIst3把ArrayList1中的内容装进去了

打印结构在这里插入图片描述

除了构造方法还有一些普通的方法:


3.
Arralist的几种遍历的方式
1…使用for循环
在这里插入图片描述
2…使用for的加强版foreach
在这里插入图片描述
3…使用迭代器

在这里插入图片描述

到此为止我们来总结一下arraylist的优缺点:

优点:
1…是一个动态的数组,在数组增加或者减少的处理过程中很方便
2…可以随机访问元素
3…支持多线程
缺点
1…频繁的扩容,当数组需要扩容时,会创建一个新的数组,并且将原来的元素复制到新的数组当中,导致时间和空间的浪费
2…不适合在指定位置插入和删除数据,因为插入和删除的会涉及到大量的元素移动操作,导致效率低
3…线程不安全,如果多个线程同时对同一个arraylist进行操作可能导致数组的不一致性问题.
4…不能储存基本数据类型.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值