为什么Array和ArrayList要同时存在

Array与ArrayList小记

为什么有Array还要有ArrayList

既生瑜何生亮,我都已经有Array去存取数据了为什么还要有ArrayList,甚至说 还有要有List和Dictionary 之类的存在。别问 问就是因为机器的性能有限=。=。

什么是Array

Array就是数组,那什么是数组,数组就是顺序表,那什么是顺序表:

特点之容量:比如你是个旅游区做缆车生意的,两座山距离有多远 揽绳就有多远(咋的,你还想移山?你也不是愚公),然后你很想赚钱,你拼命的往缆绳上挂缆车,然后你的绳子崩了,你被客户投诉,赔钱,最终你破产了。

特点之插队:比如你贷款换了个山头又做起了缆车生意,你吸取了上次的教训,走精英路线,你设置了VIP席位,加钱可以插队,给的越多,就能把位置加到别人前面去,但别人都坐上缆车走了一半了,这时候你要给人安排到他们前边去,怎么办!你得把前边的人喊回来然后让加钱的上去,别人再重新按照刚才的顺序再上车。很明显,你又被投诉,赔钱,然后破产了。

顺序表就是这样,容量是一开始就定好的,插入数据,就要把插入位置和后边的依次往后移动。那有人就想了,我能不能不在一开始定好大小,我能不能不移动数据就把新数据插入进去呢!答案当然是能啦👇

什么是ArrayList

我!ArrayList!不限定大小,想怎么插就怎么插!为啥我这么牛逼,因为我是线性表!什么是线性表?

特点之容量:牙疼不算病,疼起真要命!今天不知道怎么了,牙特别疼,赶紧去医院看病,发现人很多,赶紧取了号,这时候医院的系统从100个人排队变成101个。

特点之插队:前边还有100个人在排队,你等了2个小时,脸都疼肿了,下一个就是你了,突然叫号器响起,你准备起身,就听从里边传出,有请VIP-36号到诊区就诊!你这个气啊,这人比你来的晚,插你的队,甚至都不用让你移动一步(你是坐那等,没去堵门口),轻轻松松就插队了。

线性表的存储在物理上是不连续的(你等叫号时候也没站在别人身后等,你坐那等的),但顺序的连续的(100号后边就是你,你是101号),容量也是来一个加一个(你说医院坐满了怎么办。坐满了也不影响我区号,我还能网络取号!)。

那有了ArrayList为什么不删了Array

是嘞,你arraylist是来一个就加一个,无限扩大自己。我array一开始就圈好了地盘,但我地盘里每一寸土地我都记得,闭着眼都能找到我朋友的家,别人找我朋友时候,我分分钟就带他过去,你呢,你要不要打电话问问你手底下的人跑没跑别的城市买房啊?地盘小,我骄傲,我为国家省材料。

所以,Array相对ArrayList在内存上更紧凑,占地就小,读取就快。

什么时候用Array什么时候用ArrayList?

你应该已经知道怎么用了。不需要频繁插入,移除数据,还不是Array真香。

思考?

为什么还有List,Dictionary etc 这些家伙的存在,他们又提供了什么便利,又牺牲了什么?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值