java基础-数据容器之集合List

本文探讨了集合框架中的List接口,分析了数组的优缺点,并指出集合类如何解决这些问题。List是一个可空、可重复、有序的数据容器,其主要实现类包括ArrayList、LinkedList、Vector和Stack。ArrayList具有高查询性能但插入删除性能相对较弱,底层基于数组实现,支持自动扩容。
摘要由CSDN通过智能技术生成

上一节讨论数组时,我们知道数据容器是用来存放数据的,那么既然数组就可以集中存储一批业务相关的数据,为什么jdk还要提供其它“集合”类?

 

我一直认为世界上任何一种技术或事物的产生一定是因为它解决了以前技术或事物没有或不能解决的问题,至少是对“前任”的改进。那么集合到底解决了什么问题?或改进了什么问题?


先了解一下数组:

特点

  • A:内存-预先开辟了一块连续的内存
  • B:查询速度-因为内存连续,下标固定,所以查询速度极快,复杂度衡定
  • C:插入、删除速度-因为内存连续,必须移动数据,才能空出位置或移处位置,以方便插入值或删除值
  • D:无法扩展-因为内存预先连续分配,所以扩展时无法保证内存尾部刚好有足够的空闲内存可用,因此无法扩展,只能全部重新分配内存。
  • E:数据游标-数据放入数组,并没有一个值记录当前数据存放到第几个位置,需要使用方自己维护。否则需要通过遍历找到数据尾部第一个空位置。
  • F:数据可空-不能保证存储的数据为可空或非空
  • G:数据重复-不能保证存储的数据是否重复与否
  • H:性能-不能保证不同操作对应性能为最优情况
  • I:安全-不能保证并发或并行操作数据安全


数组有自己的优点,也有自己的短板,新的集合相关类,就是为了解决上面所有问题中的部分,不同的集合类解决不同的问题。


数据容器种类及主要实现类



 集合关注点:

  • A:是否允许空
  • B:是否允许重复数据
  • C:是否有序:(有序不是指是否排充,而是指取数据的顺序与存数据的顺序是否一样:如数据a[2]=1,那么a[2]取仍然是1,这就是有序。但a[2]=1,a[3]=0, a[4]=5并不影响数组是有序的)
  • D:是否线程安全 


Collection-集合根接口

Collection接口是所有集合类(Set/list/queue)的根接口。

它的主要功能有:

  • 增:add/addAll
  • 删:remove/removeAll/removeIf/clear
  • 改:
  • 查:iterat
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值