Arraylist vs向量
一个数组列表可以被看作一个动态数组,它的大小可以增长。由于这个原因,程序员在定义数组列表时不需要知道它的大小。Vector也可以被看作是一个可以增加大小的数组。向量可以很容易地分配,并且可以用于在运行时之前不知道所需的存储大小的情况下。
什么是数组列表?
一个数组列表可以被看作一个动态数组,它的大小可以增长。因此,在不知道声明时所需元素的大小的情况下,使用数组列表是理想的。在Java中,数组列表只能保存对象,它们不能直接保存基元类型(您可以将基元类型放在对象中或使用基元类型的包装器类)。通常,数组列表提供了执行插入、删除和搜索的方法。访问一个元素的时间复杂度为o(1),插入和删除的时间复杂度为o(n)。在Java中,可以使用foreach循环、迭代器或简单地使用索引遍历数组列表。在Java中,数组列表是从1.2版本引入的,它是Java集合框架的一部分。
什么是Vector?
Vector也是一个可以增加大小的数组。向量可以很容易地分配,并且在运行时才知道所需的存储大小时可以使用向量。向量也只能保存对象,不能保存原语类型。向量是同步的,因此可以在多线程环境中安全地使用。向量提供了添加对象、删除对象和搜索对象的方法。与java中的数组列表类似,可以使用foreach循环、迭代器或简单地使用索引遍历向量。说到Java,从Java的第一个版本开始就包含了向量。
数组列表和向量的区别是什么?
尽管数组列表和向量都非常类似于可以增加大小的动态数组,但它们有一些重要的区别。数组列表和向量之间的主要区别在于,向量是同步的,而数组列表是不同步的。因此,在多线程环境中使用数组列表并不合适,而向量可以在多线程环境中安全地使用(因为它们是线程安全的)。但是向量的同步会导致性能下降。因此,在单线程环境中使用向量不是一个好主意。在内部,数组列表和向量都使用数组来保存对象。当当前空间不够时,vector将使其内部数组的大小增加一倍,而arraylist将其内部数组的大小增加50%。但是当同时使用数组列表和向量时,通过给出合适的初始容量,可以避免不必要的调整内部数组的大小。在已知数据增长率的情况下,可以定义向量的增量值,因此使用向量更合适。
留下一个回复