一.前言
- 以前对Vector这对象很陌生,用的少,对象的名字(Vector矢量,向量)也让人摸不着头脑,以为是什么新东西...
- 前文已经学习了ArrayList和LinkedList的源码,原本打算写个Vector源码分析的,但看了一下,Vector和ArrayList一样啊,于是作罢。本文就简单的对比下这三种List。
二.Vector & ArrayList
- Vector线程安全,所有的方法都synchronized。ArrayList线程不安全,裸奔。
- 扩容
//ArrayList
public void ensureCapacity(int minCapacity) {
modCount++;
int oldCapacity = elementData.length;
if (minCapacity > oldCapacity) {
Object oldData[] = elementData;
//直接扩到(oldCapacity * 3)/2 + 1
int newCapacity = (oldCapacity * 3)/2 + 1;
if (newCapacity < minCapacity)
newCapacity = minCapacity;
// minCapacity is usually close to size, so this is a win:
elementData = Arrays.copyOf(elementData, newCapacity);
}
}
//Vector
private void ensureCapacityHelper(int minCapacity) {
int oldCapacity = elementData.length;
if (minCapacity > oldCapacity) {
Object[] oldData = elementData;
//当数组溢出时容量增加的量capacityIncrement,Vector构造函数里指定
//扩到oldCapacity + capacityIncrement或者oldCapacity * 2
int newCapacity = (capacityIncrement > 0) ?
(oldCapacity + capacityIncrement) : (oldCapacity * 2);
if (newCapacity < minCapacity) {
newCapacity = minCapacity;
}
elementData = Arrays.copyOf(elementData, newCapacity);
}
}
- 版本:Vector和Hashtable一样,所以jdk1.0就有的东西,代码质量一般。ArrayList在1.2里面出现。
- 命名:习惯ArrayList。比喻Vector removeElementAt(int index),而ArrayList remove(int index)。
三.ArrayList & LinkedList
- ArrayList内部用数组实现,LinkedList内部用双向链表实现。
- ArrayList遍历元素效率高,LinkedList插入删除元素效率高。
- 但问题不是绝对的,还是那句话,不同场景使用适合自己的数据结构。
四.PS
超无技术含量的文章,欢迎拍砖,欢迎点评,让我发现Vector & ArrayList & LinkedList还有什么能让我眼前一亮的东西。
分享到:
相关推荐
在Java集合框架中,Vector、ArrayList和LinkedList是三种常见的List接口实现类,它们各自具有不同的特点和适用场景。下面我们将详细对比这三个类的区别。 1. **Vector** - **线程安全**:Vector是线程安全的,因为...
在Java集合框架中,Vector、ArrayList和LinkedList都是List接口的实现,它们提供了有序集合的功能,允许根据位置进行元素的添加、删除和查找。然而,它们在设计和性能上有着显著的区别。 首先,Vector是Java早期...
Java容器集合(equals和hashCode+基础数据结构+ArrayList+Vector和LinkedList) Java容器集合是Java中的一种基础数据结构,用于存储和管理数据。其中,equals和hashCode方法是Java容器集合中两个非常重要的方法,...
- `LinkedList`虽然在随机访问上不如`ArrayList`和`Vector`,但在插入和删除操作上表现更好,因为它只需要修改相邻元素的链接,时间复杂度为O(1),但遍历速度慢。 5. **使用场景**: - 如果在单线程环境中,且...
### Java容器类详解:List、ArrayList、Vector及Map、HashTable应用 #### 一、Java容器类概述 在Java中,容器类(也称为集合类)主要用于存储和管理对象。Java SDK提供了一系列内置容器类,它们位于`java.util`...
在Java编程语言中,`ArrayList`和`Vector`都是实现`List`接口的容器类,它们主要用于存储和管理有序的元素集合。虽然两者都基于数组实现,但在功能特性和性能上存在显著差异。 1. **数据结构实现**: - `ArrayList...
7. 容器与多线程:学习在多线程环境中使用容器,了解线程安全问题,例如同步容器类(如Vector、HashTable)和并发容器类(如ConcurrentHashMap、CopyOnWriteArrayList)。 8. 泛型:利用泛型在容器中存储特定类型的...
总结来说,选择哪种容器取决于具体的需求:如果需要有序的元素集合,可以使用List,如ArrayList或LinkedList;如果需要键值对存储,可以选择Map,如HashMap或HashTable;在多线程环境下,需考虑同步性能,可以选择...
List、ArrayList、Vector及map、HashTable、HashMap是Java容器类中的几个重要的接口和实现类,了解它们之间的区别是非常重要的。 首先,我们来看List和ArrayList的区别。List是一个接口,而ArrayList是一个实现了...
ArrayList是Java集合框架中常用的类,它继承自AbstractList,并实现了List接口,提供了一种基于动态数组的...在并发环境下,应考虑使用线程安全的容器,如Vector或使用Collections.synchronizedList()来同步ArrayList。
- **性能**:ArrayList 比 Vector 快,因为 Vector 的所有操作都是同步的,这会影响性能。 - **功能**:ArrayList 更通用,可通过 Collections 工具类轻松获得同步列表或只读列表。 **Array 和 ArrayList**: - **...
阐述ArrayList、Vector、LinkedList的存储性能和特性。 答:ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及...
在Java编程语言中,ArrayList、Vector和LinkedList是三个常见的列表实现,它们都实现了List接口,因此都支持元素的增删改查操作。然而,它们在内部实现和性能特性上存在显著差异。 首先,ArrayList和Vector都是基于...
在Java中,虽然ArrayList和Vector类也可以用来实现堆栈,但LinkedList由于其特性,如高效地添加和删除元素,更适合作为堆栈的基础。 以下是使用LinkedList模拟堆栈的步骤: 1. 首先,我们需要创建一个LinkedList...
本篇将详细介绍几种常见的容器类(如LinkedList、Vector、ArrayList和Hashtable)以及它们的迭代器用法。 1. **LinkedList**: LinkedList是一种双向链表,它允许在列表的任何位置插入和删除元素。由于其结构,...
Java 类容器是 Java 编程中非常重要的一个概念,它主要指的是 Java 集合框架中的各种类,如 ArrayList、LinkedList、HashSet、HashMap 等,这些类用于存储和管理对象。本文将深入探讨这些常用的Java类容器,帮助...
9. **ArrayList、Vector和LinkedList的存储性能和特性**: - ArrayList:基于动态数组,适合随机访问,插入和删除效率较低。 - Vector:与ArrayList类似,但线程安全,性能稍低。 - LinkedList:基于链表,插入和...
ArrayList和Vector是两种常用的容器类,它们都实现了List接口,属于Java集合框架的一部分。本篇文章将详细探讨这两个类的用法及其基本功能。 首先,我们来看ArrayList类。ArrayList是一个基于数组的动态列表,它...
ArrayList、LinkedList和Vector是实现List接口的典型例子。ArrayList适合于频繁访问元素但较少改变元素顺序的情况,而LinkedList则在元素的插入和删除上更高效,因为它不需移动元素。 Set接口代表不包含重复元素的...