java.util类Vector<E>

本文详细介绍了Java中的Vector类,包括其特点、构造函数、添加和删除元素的方法,以及如何获取和遍历元素等内容。此外还提供了Vector类的各种常用方法介绍。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java.util类Vector<E>

在多线程中同时对某个数组操作时,支持同步的vector无疑是个很好的选择,一般在需要将多个元素存在一个集合里的时候用。

创建

Vector v = new Vector();

创建Vector时分配一个初始的存储容量initialCapacity,存储容量以参数capacityIncrement定义的增量增长。

Vector有三个构造函数

①public Vector(int initialCapacity, int capacityIncrement)

初始的存储容量和capacityIncrement可以在Vector的构造函数中定义。

②public Vector(int initialCapacity)

只创建初始存储容量。

③public Vector()

既不指定初始的存储容量,也不指定增长的增量。


添加

v.add("zte");

将指定元素追加到向量的末尾。

void add(int index, E element)

在向量的指定位置插入指定的元素。

boolean addAll(Collection<? extends E> c)

将指定 Collection 中的所有元素追加到向量的末尾,按照指定集合的迭代器所返回的顺序追加这些元素。

boolean addAll(int index, Collection<? extends E> c)

在指定位置将指定 Collection 中的所有元素插入到向量中。 

void addElement(E obj)

将指定的组件添加到此向量的末尾,将其大小增加 1。 


删除元素

v.remove("zte");//删除指定内容的元素

v.remove(0);//按索引号删除元素

已有元素的个数
int size = v.size();


遍历元素
for (int i = 0; i < v.size(); i++)
{
    System.out.println(v.get(i));
}


Vector类提供的访问方法支持类似数组的运算和与Vector大小相关的运算:
1)给向量中增加、删除、插入元素
2)测试矢量的内容和检索指定的元素
3)判定字节大小和矢量中元素数目
addElement(Object obj)
把组件加到向量尾部,同时大小加1,向量容量比以前大1????
insertElementAt(Object obj, int index)
把组件加到指定索引处,此后内容向后移动一个单位
setElementAt(Object obj, int index)
把组件加到指定索引处,此处内容被替代
removeElement(Object obj)
移除向量中指定的组件
removeAllElements()
移除向量中所有组件,向量大小为0


int capacity() 

返回此向量的当前容量。

void clear() 

从此向量中移除所有元素。

Object clone()

返回向量的一个副本。

boolean contains(Object elem)

测试指定的对象是否为此向量中的组件。

boolean containsAll(Collection<?> c)

如果此向量包含指定 Collection 中的所有元素,则返回 true。

void copyInto(Object[] anArray)

将此向量的组件复制到指定的数组中。

E elementAt(int index)

返回指定索引处的组件。

Enumeration<E> elements()

返回此向量的组件的枚举。

void ensureCapacity(int minCapacity)

增加此向量的容量(如有必要),以确保其至少能够保存最小容量参数指定的组件数。

boolean equals(Object o)

比较指定对象与此向量的相等性。

E firstElement()

返回此向量的第一个组件(位于索引 0 处的项)。

E get(int index)

返回向量中指定位置的元素。

int hashCode()

返回此向量的哈希码值。

int indexOf(Object elem)

搜索给定参数的第一个匹配项,使用 equals 方法测试相等性。

int indexOf(Object elem, int index)

搜索给定参数的第一个匹配项,从 index 处开始搜索,并使用 equals 方法测试其相等性。

void insertElementAt(E obj, int index)

将指定对象作为此向量中的组件插入到指定的 index 处。

boolean isEmpty()

测试此向量是否不包含组件。

E lastElement()

返回此向量的最后一个组件。

int lastIndexOf(Object elem) 

返回指定的对象在此向量中最后一个匹配项的索引。

int lastIndexOf(Object elem, int index)

向后搜索指定的对象,从指定的索引处开始搜索,并返回一个索引。

E remove(int index)

移除此向量中指定位置的元素。

boolean remove(Object o)

移除此向量中指定元素的第一个匹配项,如果向量不包含该元素,则元素保持不变。

boolean removeAll(Collection<?> c)

从此向量中移除包含在指定 Collection 中的所有元素。

void removeAllElements()

从此向量中移除全部组件,并将其大小设置为零。

boolean removeElement(Object obj)

从此向量中移除变量的第一个(索引最小的)匹配项。

void removeElementAt(int index)

删除指定索引处的组件。

protected void removeRange(int fromIndex, int toIndex)

从此 List 中移除其索引位于 fromIndex(包括)与 toIndex(不包括)之间的所有元素。

boolean retainAll(Collection<?> c)

在此向量中仅保留包含在指定 Collection 中的元素。

E set(int index, E element)

用指定的元素替换此向量中指定位置处的元素。

void setElementAt(E obj, int index)

将此向量指定 index 处的组件设置为指定的对象。

void setSize(int newSize)

设置此向量的大小。

int size()

返回此向量中的组件数。

List<E> subList(int fromIndex, int toIndex)

返回此 List 的部分视图,元素范围为从 fromIndex(包括)到 toIndex(不包括)。

Object[] toArray()

返回一个数组,包含此向量中以正确顺序存放的所有元素。

<T> T[] toArray(T[] a)

返回一个数组,包含此向量中以正确顺序存放的所有元素;返回数组的运行时类型为指定数组的类型。

String toString()

返回此向量的字符串表示形式,其中包含每个元素的 String 表示形式。

void trimToSize()

对此向量的容量进行微调,使其等于向量的当前大小。

<think>嗯,用户想了解Java中List接口的数据结构及其继承关系。首先,我需要回忆一下Java集合框架的基础知识。记得Java的集合框架主要分为Collection和Map两大,而List属于Collection的子接口。 用户提到的List接口的继承关系,应该从最顶层的接口开始。Iterable接口是集合框架的最顶层,因为它定义了迭代的能力。然后Collection接口继承Iterable,而List又继承自Collection。这样List就有了基本的集合操作和迭代功能。 接下来,具体的实现有哪些呢?常见的包括ArrayList、LinkedList和Vector。Vector还有个子Stack,不过现在可能不太常用了。需要指出这些实现的数据结构:ArrayList基于动态数组,LinkedList基于双向链表,Vector是线程安全的动态数组,但性能较差。 然后,用户可能还想知道List接口的方法特点,比如有序、可重复、有索引。需要提到List特有的方法,比如通过索引访问元素,添加或删除特定位置的元素等。这部分可以引用提供的参考资料中的内容,比如引用[3]和[4]提到的List的方法和实现。 另外,用户的问题可能隐含了为什么需要不同的实现,比如ArrayList和LinkedList的区别,应用场景。虽然用户没有直接问,但作为相关知识可能需要提及,以帮助用户更好地理解数据结构的选择。 还要注意引用格式,按照要求在每个引用末尾加上标识符,比如[^3],[^4]等。确保引用的内容与参考资料中的信息对应正确,比如接口的方法和继承结构。 最后,生成的相关问题需要围绕继承关系、实现区别、线程安全、性能优化等方面,这样用户如果有进一步的问题可以继续探索。例如,ArrayList和LinkedList的区别,线程安全的List实现,或者Vector和ArrayList的比较等。</think>### Java List接口的继承关系与数据结构 #### 一、继承关系 1. **顶层接口**:`List`接口的直接父接口是`Collection`,而`Collection`继承自`Iterable`接口[^2]。 - `Iterable`:提供迭代能力,支持`forEach`循环。 - `Collection`:定义集合通用方法(如`add()`, `remove()`, `size()`)。 2. **List接口定位**: ```text Iterable ↑ Collection ↑ List ``` 3. **实现**: - `ArrayList`:基于动态数组实现。 - `LinkedList`:基于双向链表实现。 - `Vector`:线程安全的动态数组(遗留)。 - `Stack`:继承自`Vector`,提供栈结构[^1][^4]。 #### 二、数据结构特点 1. **有序性**: - 元素按插入顺序存储,通过下标(从0开始)访问,例如: $$ \text{list.get(0)} \quad \text{获取第一个元素} $$ 2. **可重复性**: - 允许存储重复元素,例如`[1, 1, 2]`是合法的。 3. **操作方法**: - **索引操作**:`get(int index)`, `set(int index, E element)`[^4]。 - **动态扩展**:`ArrayList`自动扩容(默认容量10,增长因子1.5倍)。 #### 三、实现对比 | 实现 | 数据结构 | 线程安全 | 适用场景 | |-------------|----------------|----------|------------------------| | `ArrayList` | 动态数组 | 否 | 高频查询、随机访问 | | `LinkedList`| 双向链表 | 否 | 高频插入/删除 | | `Vector` | 同步动态数组 | 是 | 多线程环境(已不推荐) | 例如,`ArrayList`的添加操作源码片段: ```java public boolean add(E e) { ensureCapacityInternal(size + 1); // 扩容检查 elementData[size++] = e; // 插入元素 return true; } ``` #### 四、泛型支持 通过泛型约束元素型,例如: ```java List<String> list = new ArrayList<>(); // 仅允许添加字符串 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值