java LinkedList 和 ArrayList 对比

ArrayList 底层实现是一个动态数组列表,通过对列表的不断扩容来增加容量。
LinkedList 主要通过链表实现,将所有元素串联起来。

增:

ArrayList和LinkedList 的add()方法 相比较,测试结果:ArrayList 优于LinkedList,可能原因是两者都是在队尾添加元素,所以不牵扯到元素的移动,而linkedList的元素每次需要新建Node节点,来存储元素,增加了内存和执行次数,所以更加耗时。
LinkedList的 addFirst() 和 ArrayList 的 add(int 0, E e) 比较,L的速度明显优于A的插入速度,A每次插入都需要后面的元素后移一位。
附ArrayList每次增加容量的大小,首次扩容为10,后续扩容量为oldCapacity/2;
    if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {
         minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity);
    }

    int oldCapacity = elementData.length;
    int newCapacity = oldCapacity + (oldCapacity >> 1); 

删:

remove(E e) L 优于A, 原因 A 牵扯到元素移动。而L 只需要改变下一个节点指针即可。

查:

get(int index) 随机查找 A优于L, L会有指针移动,比较耗时。
contains(E e), indexOf(E e) 查找某一个元素 A 相对优于L.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值