我是靠谱客的博主 传统冬瓜,最近开发中收集的这篇文章主要介绍Vectory源码解析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Vectory注意事项

  • Vectory的基本介绍

    • Vectory 底层也是一个对象数组,protected Object[] elementData;

    • Vectory 是线程同步的,即线程安全,Vectory类的操作方法带有synchronized

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

    • 在开发中,需要线程同步安全时,考虑使用Vector

Vectory源码分析

  • Vector和ArrayList的比较:

底层结构版本线程安全(同步)效率扩容倍数
ArrayList可变数组jdk1.2不安全,效率高如果有参构造1.5倍;如果无参构造:第一次10,第二次按照1.5倍扩容
Vector可变数组jdk1.0安全,效率不高如果时无参,默认10,满后,按照2倍扩容;如果指定大小,则每次直接按照2倍扩容
import java.util.Vector;
​
public class VectorSource {
   public static void main(String[] args) {
       //无参构造
       Vector vector = new Vector();
​
       for (int i = 0; i < 10; i++) {
           vector.add("WRRY" + i);
     
}
       vector.add(100);
       System.out.println(vector);
 
}
}
​
/*
1.new Vectory() 底层
   public Vector() {
       this(10);
   }
2.vector.add(100);
2.1
//下面这个方法就添加数据到vector集合
   public synchronized boolean add(E e) {
       modCount++;
       ensureCapacityHelper(elementCount + 1);
       elementData[elementCount++] = e;
       return true;
   }
2.2
//确定是否需要扩容 条件
if (minCapacity - elementData.length > 0)
   private void ensureCapacityHelper(int minCapacity) {
       // overflow-conscious code
       if (minCapacity - elementData.length > 0)
           grow(minCapacity);
   }
2.3
//如果 需要数组大小不够用,就扩容,扩容算法
   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);
   }
*/

最后

以上就是传统冬瓜为你收集整理的Vectory源码解析的全部内容,希望文章能够帮你解决Vectory源码解析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(86)

评论列表共有 0 条评论

立即
投稿
返回
顶部