集合介绍(2)

List接口分析

常用方法

List的三种遍历方式(LinkedList,Vector,ArrayList...)

iterator迭代器;

增强for;

因为List本质底层是数组存储,因此也可以使用普通for遍历;

for(int i = 0; i < list.size() ;i++){

        Object obj = list.get(i);

        System.out.println(obj);

}

----------------------------------

ArrayList注意事项分析

ArrayList arraylist = new ArrayList();可以存放任意类型数据,包括空值null,并且可以加入多个空值

ArrayList基本等同于Vector,但ArrayList线程不安全,所以执行效率更高,但多线程下不适合用ArrayList

for循环添加1-10到数组中,执行add方法,首先确认容量是否足够,是否需要扩容?

此时使用默认capacity构造器,创建的elementData为空数组,第一次扩容,会默认扩容到10,第二次之后检测要求的最小容量mincapacity是否大于实际容量elementData。若大于,则执行扩容grow方法,把数组elemenData扩容到原来的1.5倍,再用Arrays.copyof()方法保证原数据不丢失

使用指定大小的构造器,创建的elemenData就是指定大小,第一次扩容按1.5倍扩容,后续机制相同。

---------------------------------

Vector类和ArrayList一样,只是Vector线程安全(同步)

LinkedList仍然是List接口的实现子类,可以添加任意元素,元素可以重复,可以添加null,线程不安全。

LinkedList底层实现了双向链表和双端队列

item存放数据,在首尾结点还存有first和last属性,对链表的删改效率极高,只需修改指向即可。

底层源码剖析

常用方法

linkedList.add();

LinkedList也可以使用普通for,迭代器和增强for遍历集合

在实际开发中应该如何选择集合?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值