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是线程安全的
分享到:
相关推荐
【JAVA Vector 源码解析和示例代码】 在Java编程语言中,`Vector`类是集合框架的一部分,早在JDK 1.0版本就已经存在。`Vector`类继承自`AbstractList`并实现了`List`, `RandomAccess`, `Cloneable`等接口,提供了...
- **Vector源码分析**:理解 `vector` 的底层实现机制,包括如何动态调整容量、如何高效地插入和删除元素等。 - **Red-Black Tree源码分析**:分析红黑树的插入、删除操作以及颜色翻转等维护平衡的策略。 - **Memory...
Vector 底层结构和源码分析 Vector 是 Java 中一个古老的集合类,用于存储和管理对象的集合。它和ArrayList一样,都是基于数组实现的,但是 Vector 是线程同步的,即线程安全的。在本文中,我们将深入分析 Vector ...
泛型类vector源码分析
计算机后端-Java-Java核心基础-第24章 集合01 16. Vector的源码分析.avi
在这个“C++简单源码分析”中,我们将探讨C++的基本语法、常用算法以及程序设计技巧。 首先,C++的基础语法是学习的起点。C++的语法结构严谨,包括变量声明、类型系统、控制流(如if语句、for循环和while循环)、...
在IT领域,Fisher向量(Fisher Vector)是一种广泛应用于图像识别和视频分析的特征表示方法,尤其在计算机视觉中具有重要的地位。标题提到的"combined-fisher-vector"项目显然是一个专门针对视频密集轨迹特征提取的...
《JUC并发编程与源码分析视频课》是一门深入探讨Java并发编程的课程,主要聚焦于Java Util Concurrency(JUC)库的使用和源码解析。JUC是Java平台提供的一组高级并发工具包,它极大地简化了多线程编程,并提供了更...
通过对SGI STL`vector`源码的分析,我们可以学习到C++中动态数组的实现技巧,包括内存管理、迭代器实现、异常安全策略等,这对于理解和优化C++程序的性能至关重要。通过深入理解这些内部机制,开发者可以更好地运用...
在编程领域,特别是Java或C++等语言中,向量(Vector)是一种常见的...对于深入的源码分析或特定工具的使用,需要查看原文档或博客内容获取更精确的信息。遗憾的是,提供的链接已无法访问,因此无法提供更详细的解释。
### ARM Linux中断源码分析(2)——中断处理流程 #### 一、中断与异常概述 在ARM架构的Linux系统中,对中断处理的理解是非常重要的。本文将详细解析ARM Linux中断处理流程,从异常向量表出发,深入探讨中断处理的...
思科VPP(Vector Packet Processing)是一个高性能的网络数据平面解决方案,广泛应用于现代网络架构中,特别是在网络功能虚拟化...以上对思科VPP源码分析的知识点总结,提供了深入理解VPP核心概念和工作机制的基础。
本文档共分为三个部分,第一个部分介绍SVM的原理,我们全面介绍了5中常用的SVM算法:C-SVC、ν-SVC、单类SVM、ε-SVR和ν-SVR,其中C-SVC和ν-SVC不仅介绍了处理两类分类问题的情况,还介绍处理多类问题的情况。...
“STL源码分析”这本书主要探讨了STL的内部实现机制,包括容器(如vector、list、set等)、迭代器、算法和适配器等核心组件。通过源码分析,读者可以了解到STL如何利用模板元编程技术实现高效的数据操作,并理解其...
4. **源码分析** - `Vector`的底层实现是一个可变大小的数组,它的很多操作直接对应于数组操作。线程安全是通过在方法上添加`synchronized`关键字来实现的。 - 当`Vector`需要扩容时,它会创建一个新的更大数组,...
能学到什么:ArrayList的源码分析,自动扩容和自动缩容的源码分析,相关参数的深度解析,从是什么,为什么,怎么做三个角度进行讲解,用通俗易懂的白话进行介绍,LinkedList和Vector以及ArrayList的区别以及使用场景...
源码分析时,可以关注以下几个关键点: 1. 容量管理:观察ArrayList和Vector如何进行扩容,了解它们扩容的策略和成本。 2. 插入和删除:比较ArrayList、Vector和LinkedList在插入和删除元素时的代码实现,分析时间...
6. **源码分析**:书中提供的源码可能是作者为了帮助读者深入理解Raphael.js的工作原理和最佳实践而编写的实例代码,可以作为学习和参考的宝贵资源。 7. **性能优化**:讨论如何提高Raphael.js图形的渲染速度,以及...