list集合

集合与数组的不同在于,集合是大小可变的序列,而且元素类型可以不受限定,但必须是引用类型,而且集合类全部支持泛型,这是一种数据安全的用法;list集合中的元素是有序的,而且允许重复,要注意的是,list集合中元素的索引与数组中元素的索引一样,全部是从零开始的。

List实现类之ArrayList集合:ArrAyList基于动态数组,相比数组,区别在于容量的可扩展性,数据类型只要是Object类型就行,存储的必须是对象,不能存储基础数据类型。举个简单的小例子:有一个list集合,现在要做从1到3的添加操作,首先的话肯定是list。


add()方法完成添加操作,但是此时有些人可能存在疑问,基本类型不是不能存储?要明白的是int类型会自动转换成Integer类型,这就涉及到自动装箱拆箱的知识了。每一个ArrayList都有一个初始容量(10),这容量代表了数组的大小,当容器中的元素不断增加时,会进行容量检查,当快要溢出时,就会进行扩容操作。所以,在插入数据时,我们要明确所插入元素的多少,最好指定容器的初始容量值,避免过多的进行扩展操作而浪费。ArrayList数组的底层是一段连续的内存空间,所以定位快,进而当操作修改数据时,速度会很快,但是当进行添加与删除操作时,如果是添加在首部或者尾部,速度会很快,但是如若在中间进行操作,会发生数据的集体移动,时间上就会有一定的影响。

List实现类之LinkedList集合:LinkedList基于链表的数据结构,解决了数组与数组列表的缺陷,例如当我要删除数据时,数组中处于被元素之后的所有元素都要向数组的前端移动,在数组的中间插入元素也是同样的道理。然而LinkedList解决了这个问题,原因是链表将每个对象存放在独立的节点中,每个节点还存放着序列中上一个节点的引用和下一个节点的引用,这样的话,当进行删除操作时,只需要更新删除元素附近的几点,添加同理。如果是添加在首部或者尾部,LinkedList与ArrAyList没差,速度基本一样。

很多人都认为新增和删除操作add和remove,LinkedLIst比较占优势,因为ArrayList要移动数据。 但是个人认为这一点要看实际情况,如果只是对单条数据进行插入或者删除操作,ArrayList的速度会优于LinkedLIst。但是若要批量的随机插入删除数据,LinkedLIst的速度优于ArrayList,因为ArrAyList每一次进数据caozu涉及到数据的移动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值