ArrayList、LinkedList小记

首先ArrayList、LinkedList均属于List的公共集合类,有序可重复集合。

他们的不同点:

1.ArrayList是实现了基于动态数组的数据结构(Object[] elementData),LinkedList基于链表的数据结构(Node<E> {E item;Node<E> next;Node<E> prev;)。
2.对于随机访问get和set,ArrayList优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList占优势,因为ArrayList要移动数据。

注意:

add方法是在某个指定的位置加上某个对象,并将原来的位置的那个对象向后挤了一格.

源码如下:

public boolean add(E e) {
        ensureCapacityInternal(size + 1);  // Increments modCount!!
        elementData[size++] = e;
        return true;
    }

set方法是将原来位置上的那个给取代了,并将原来位置上对象的返回.

 public void set(E e) {
            if (lastRet < 0)
                throw new IllegalStateException();
            checkForComodification();

            try {
                ArrayList.this.set(lastRet, e);
            } catch (IndexOutOfBoundsException ex) {
                throw new ConcurrentModificationException();
            }
        }

转载于:https://my.oschina.net/u/3203760/blog/847046

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值