集合类Vector源码和LinkedList分析

本文深入探讨Vector、ArrayList和LinkedList的数据结构特性。Vector初始化时预设容量,确保线程安全;ArrayList则提供更高的获取效率;而LinkedList在插入和删除操作上表现更优,适合链表操作频繁的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个类一般跟ArrayList比较起来。也从使用者角度来看下这个源码,最后比较下跟ArrayList有什么区别。
Vector vector=new Vector();

public Vector() {
        this(10);
    }

跟ArrayList不同的地方是,初始化使用先建立了一个10容量的数组。

  public Vector(int initialCapacity, int capacityIncrement) {
        super();
        if (initialCapacity < 0)
            throw new IllegalArgumentException("Illegal Capacity: "+
                                               initialCapacity);
        this.elementData = new Object[initialCapacity];
        this.capacityIncrement = capacityIncrement;
    }

//ArrayList是一样的,只不过方法加了锁,等于说线程安全了。

   public synchronized boolean add(E e) {
        modCount++;
        ensureCapacityHelper(elementCount + 1);
        elementData[elementCount++] = e;
        return true;
    }

后续的操作跟ArrayList大同小异,就连方法名都是类似。下面看下
LinkedList。初始化什么也没做。看下add方法

 public boolean add(E e) {
        linkLast(e);
        return true;
    }

//这段可以看出,往最末尾插。如果末尾元素为空,代表是第一个元素。

 void linkLast(E e) {
        final Node<E> l = last;
        final Node<E> newNode = new Node<>(l, e, null);
        last = newNode;
        if (l == null)
            first = newNode;
        else
            l.next = newNode;
        size++;
        modCount++;
    }

LinkList是一个双链表,在添加和删除元素时具有比ArrayList更好的性能.但在get与set方面弱于ArrayList.当然,这些对比都是指数据量很大或者操作很频繁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值