集合的介绍以及与数组的使用选择

1.集合介绍

关于容器,我们学过两个,一个是StringBuilder,另一个就是数组,在这里,数组的功能似乎与集合更相近,那我们为什么还要学习集合?

我们引用一个例子进行解释,如图,假如我们买了三样东西,并将它们用容器装起来

如果我们用的是数组装,那么长度就固定了,假如我们突然又想买第四个东西,那么,就没有地方进行存储

但是,集合的长度是可变的,所以我们用集合就可以装入第四样物品,这就是为什么要学习集合的原因

2.Arraylist介绍

集合中有许多类,ArrayList就是其中之一,也是我们重点要学的类。

有人可能会认为,既然集合和数组都可以装东西,而且集合限制还更少,那么数组以后就可以舍弃,那不妨先看看ArrayList的原理

ArrayList长度可变原理

当创建ArrrayList时,底层会存在一个长度为10的空数组,用于储存元素

如果此时要装入第11个元素,ArrayList就会按照1.5倍扩充数组长度

然后,先将之前的元素拷贝到新的数组,之前的数组就会变为垃圾等待被清理

接着,再把第11个元素装入数组

如果又有更多的元素要装入数组,ArrayList就会继续按照上述步骤进行扩容

但我们发现了一个问题,集合确实储存了第11号元素,但是,集合还剩余4个位置没有使用,这就会造成内存浪费,如果我们使用的是数组,直接确定长度11,就不会有浪费的情况。

所以,并不是学了集合就要舍弃数组,集合和数组是需要看情况进行选择的

3.集合和数组的使用场景

posted @ 2024-12-08 10:49  直実  阅读(12)  评论(0编辑  收藏  举报