集合05/List接口

collection子接口之一: List接口

在这里插入图片描述

在这里插入图片描述

面试题:ArrayList、 LinkedList. Vector三者的异同?
同:三个类都是实现了List接口,存储数据的特点相同:存储有序的、可重复的数据
不同:


ArrayList的源码分析:

注意看源码进行比较

  1. jdk7

在这里插入图片描述

结论:建议开发中使用带参的构造器:ArrayList list = new ArrayList(int capacity)

源码:指定容量避免扩容困扰
在这里插入图片描述

  1. jdk8

Arraylist的变化:

在这里插入图片描述

小结: jdk7中的ArrayList的对象的创建类似于单例的饿汉式,而jdk8中的ArrayList的对象
的创建类似于单例的懒汉式,延迟了数组的创建,节省内存。


LinkedList的源码分析:

在这里插入图片描述

LinkedList list = new LinkedList();内部声明了Node类型的first和last属性,默认值为null
list.add(123);//将123封装到Node中,创建了Node对象。

体现了LinkedList的双向链表的说法
在这里插入图片描述


Vector的源码分析:

jdk7和jdk8中通过Vector()构造器创建对象时,底层都创建了长度为10的数组。在扩容方面,默认扩容为原来的数组长度的2倍。|


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值