`

Vector 源码分析

阅读更多
Vector类继承了类AbstractList实现了接口implements List<E>, RandomAccess, Cloneable, java.io.Serializable

存储结构是: 
protected Object[] elementData;

添加和删除方法:
  public synchronized void insertElementAt(E obj, int index) {
	modCount++;
	if (index > elementCount) {
	    throw new ArrayIndexOutOfBoundsException(index
						     + " > " + elementCount);
	}
	ensureCapacityHelper(elementCount + 1);
	System.arraycopy(elementData, index, elementData, index + 1, elementCount - index);
	elementData[index] = obj;
	elementCount++;
    }
  public synchronized E remove(int index) {
	modCount++;
	if (index >= elementCount)
	    throw new ArrayIndexOutOfBoundsException(index);
	Object oldValue = elementData[index];

	int numMoved = elementCount - index - 1;
	if (numMoved > 0)
	    System.arraycopy(elementData, index+1, elementData, index,
			     numMoved);
	elementData[--elementCount] = null; // Let gc do its work

	return (E)oldValue;
    }

subList方法,获得一个子的链表,Collections.synchronizedList可以获得一个线程安全的List
    public synchronized List<E> subList(int fromIndex, int toIndex) {
        return Collections.synchronizedList(super.subList(fromIndex, toIndex),
                                            this);
    }


总结:vector是线程安全的
分享到:
评论
1 楼 zwt2001267 2012-05-16  
Java 理论与实践: 描绘线程安全性
http://www.ibm.com/developerworks/cn/java/j-jtp09263/

相关推荐

    JAVA Vector源码解析和示例代码

    【JAVA Vector 源码解析和示例代码】 在Java编程语言中,`Vector`类是集合框架的一部分,早在JDK 1.0版本就已经存在。`Vector`类继承自`AbstractList`并实现了`List`, `RandomAccess`, `Cloneable`等接口,提供了...

    C++STL源码分析

    - **Vector源码分析**:理解 `vector` 的底层实现机制,包括如何动态调整容量、如何高效地插入和删除元素等。 - **Red-Black Tree源码分析**:分析红黑树的插入、删除操作以及颜色翻转等维护平衡的策略。 - **Memory...

    Vector底层结构和源码分析

    Vector 底层结构和源码分析 Vector 是 Java 中一个古老的集合类,用于存储和管理对象的集合。它和ArrayList一样,都是基于数组实现的,但是 Vector 是线程同步的,即线程安全的。在本文中,我们将深入分析 Vector ...

    泛型类vector<T>源码分析

    泛型类vector源码分析

    计算机后端-Java-Java核心基础-第24章 集合01 16. Vector的源码分析.avi

    计算机后端-Java-Java核心基础-第24章 集合01 16. Vector的源码分析.avi

    C++简单源码分析

    在这个“C++简单源码分析”中,我们将探讨C++的基本语法、常用算法以及程序设计技巧。 首先,C++的基础语法是学习的起点。C++的语法结构严谨,包括变量声明、类型系统、控制流(如if语句、for循环和while循环)、...

    combined-fisher-vector:为视频上的密集轨迹特征提取各种 Fisher 向量描述符

    在IT领域,Fisher向量(Fisher Vector)是一种广泛应用于图像识别和视频分析的特征表示方法,尤其在计算机视觉中具有重要的地位。标题提到的"combined-fisher-vector"项目显然是一个专门针对视频密集轨迹特征提取的...

    JUC并发编程与源码分析视频课.zip

    《JUC并发编程与源码分析视频课》是一门深入探讨Java并发编程的课程,主要聚焦于Java Util Concurrency(JUC)库的使用和源码解析。JUC是Java平台提供的一组高级并发工具包,它极大地简化了多线程编程,并提供了更...

    SGI STL vector相关源码

    通过对SGI STL`vector`源码的分析,我们可以学习到C++中动态数组的实现技巧,包括内存管理、迭代器实现、异常安全策略等,这对于理解和优化C++程序的性能至关重要。通过深入理解这些内部机制,开发者可以更好地运用...

    Vector初始化的各种写法

    在编程领域,特别是Java或C++等语言中,向量(Vector)是一种常见的...对于深入的源码分析或特定工具的使用,需要查看原文档或博客内容获取更精确的信息。遗憾的是,提供的链接已无法访问,因此无法提供更详细的解释。

    ARM Linux中断源码分析(2)——中断处理流程

    ### ARM Linux中断源码分析(2)——中断处理流程 #### 一、中断与异常概述 在ARM架构的Linux系统中,对中断处理的理解是非常重要的。本文将详细解析ARM Linux中断处理流程,从异常向量表出发,深入探讨中断处理的...

    思科vpp源码分析

    思科VPP(Vector Packet Processing)是一个高性能的网络数据平面解决方案,广泛应用于现代网络架构中,特别是在网络功能虚拟化...以上对思科VPP源码分析的知识点总结,提供了深入理解VPP核心概念和工作机制的基础。

    Opencv2.4.9源码分析——Support Vector Machines

    本文档共分为三个部分,第一个部分介绍SVM的原理,我们全面介绍了5中常用的SVM算法:C-SVC、ν-SVC、单类SVM、ε-SVR和ν-SVR,其中C-SVC和ν-SVC不仅介绍了处理两类分类问题的情况,还介绍处理多类问题的情况。...

    STL源码分析和EFFECTIVE

    “STL源码分析”这本书主要探讨了STL的内部实现机制,包括容器(如vector、list、set等)、迭代器、算法和适配器等核心组件。通过源码分析,读者可以了解到STL如何利用模板元编程技术实现高效的数据操作,并理解其...

    java.util.vector中vector小结

    4. **源码分析** - `Vector`的底层实现是一个可变大小的数组,它的很多操作直接对应于数组操作。线程安全是通过在方法上添加`synchronized`关键字来实现的。 - 当`Vector`需要扩容时,它会创建一个新的更大数组,...

    Java中的ArrayList的底层源码解读、LinkedList、Vector的区别介绍

    能学到什么:ArrayList的源码分析,自动扩容和自动缩容的源码分析,相关参数的深度解析,从是什么,为什么,怎么做三个角度进行讲解,用通俗易懂的白话进行介绍,LinkedList和Vector以及ArrayList的区别以及使用场景...

    JDK1.6中Arraylist,Vector,LinkedList源码

    源码分析时,可以关注以下几个关键点: 1. 容量管理:观察ArrayList和Vector如何进行扩容,了解它们扩容的策略和成本。 2. 插入和删除:比较ArrayList、Vector和LinkedList在插入和删除元素时的代码实现,分析时间...

    Learning Raphael JS Vector Graphics 书+源码

    6. **源码分析**:书中提供的源码可能是作者为了帮助读者深入理解Raphael.js的工作原理和最佳实践而编写的实例代码,可以作为学习和参考的宝贵资源。 7. **性能优化**:讨论如何提高Raphael.js图形的渲染速度,以及...

Global site tag (gtag.js) - Google Analytics