Collection子接口——List接口

Java中数组存储数据具有局限性,我们通常用List替代数组
1.List集合类中元素有序,且可重复(有序:按添加的顺序)
2.ArrayList、 LinkedList、Vector三种实现类

ArrayList.、LinkedList.、Vector的使用:
ArrayList的源码分析:
①jdk.7情况下:

ArrayList list=new ArrayList();//底层创建了长度为10的object[]数组

list.add (123) //elementDate(0]= new Integer (123);

...

list.add (11);// 如果此次添加导致数组容量不够,则扩容。扩容为原来的1.5倍,并将数据复制到新的数组中

//开发中建议使用带参构造器(可指定长度)

Arruy List list = new ArrayList (int capacity);

②jdk8情况下:

Array List list =new ArrayList()://底层object [] JelementDate.初始化为{};并没有创建数组。

list.add(123);//第一次调用add()时,底层才创建了长度为10的数组,并将123添加进数组中。

//后续的添加和扩容与jdk7相同

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

LinkedList的源码分析:(双向链表)first list  last

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

Vector的源码分析
jdk7和8都创建了长度为10的数组,在扩容方面,默认扩容为原来的数组的2倍。

ArrayList::list的主要实现类,线程不安全,查询效率高。

LinkedList:对于频繁的插入、删除比ArrayList效率高。

Vector: list的古老实现类、线程安全,效率低。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值