美文网首页
Vector源码分析

Vector源码分析

作者: felixfeijs | 来源:发表于2021-04-03 16:34 被阅读0次

Vector源码分析

  • jdk7和jdk8不变
  • 与Arraylist扩容方式不同
  • 原始长度为10,代码如下
    public Vector() {
        this(10);
    }
  • 扩容为2倍,代码如下
    private void grow(int minCapacity) {
        // overflow-conscious code
        int oldCapacity = elementData.length;
        int newCapacity = oldCapacity + ((capacityIncrement > 0) ?
                                         capacityIncrement : oldCapacity);
        if (newCapacity - minCapacity < 0)
            newCapacity = minCapacity;
        if (newCapacity - MAX_ARRAY_SIZE > 0)
            newCapacity = hugeCapacity(minCapacity);
        elementData = Arrays.copyOf(elementData, newCapacity);
    }
  • 线程同步
    public synchronized boolean add(E e) {
        modCount++;
        ensureCapacityHelper(elementCount + 1);
        elementData[elementCount++] = e;
        return true;
    }
  • 古老的方法,不推荐使用,如果非要使用线程安全的集合,则可以使用Collections.synchronizedList()使其线程安全

相关文章

  • 搞懂 Java HashMap 源码

    HashMap 源码分析 前几篇分析了 ArrayList , LinkedList ,Vector ,Stack...

  • system.arraycopy native源码解析

    之前在分析ArrayList和Vector源码的时候,发现Sun JDK版本中的ArrayList和Vector大...

  • Vector源码分析

    以下内容整理自互联网,仅用于个人学习 Vector简介 Vector是基于数组实现的,是一个动态数组,其容量能自动...

  • Vector源码分析

    Vector源码分析 jdk7和jdk8不变 与Arraylist扩容方式不同 原始长度为10,代码如下 扩容为2...

  • Vector 源码分析

    Vector 简介 Vector 和 ArrayList 类似,顶级父类为 Collection,区别于 Arra...

  • Vector源码分析

    在上图中可以看到, 和 在继承关系中是平辈关系,可以简单的理解 就是线程安全的 。本文将从源码角度分析 ,如需了解...

  • Vector源码分析

    问题提出 Vector底层采用什么数据结构? Vector 和 ArrayList 有什么区别?什么情况下适用ve...

  • 源码阅读之Vector

    源码阅读是基于JDK7,本篇主要涉及Vector常用方法源码分析。 1.概述Vector实现了一个增长型的Obje...

  • c++学习记录7(GeekBand)

    这周的课程将容器讲完了。自己来总结下容器的东西。 参考:STL源码分析 (一)vector容器 vector的数据...

  • ArrayList/Vector源码分析

    摘要:本篇文章为了巩固自身对于JDK源码的学习里面 ArrayList 在ArrayList源码中,最重要的有2个...

网友评论

      本文标题:Vector源码分析

      本文链接:https://www.haomeiwen.com/subject/anpqkltx.html