ArrayList LinkedList Vector Stack
ArrayList LinkedList Vector 都继承List接口 ,List又继承于Collection接口。
Stack 继承Vector。
ArrayList 在源码中是object[] 即数组实现。无synchronized 即线程不安全的。数组有下标,因此通过下标查询数据效率高(随机访问)。但是在数组中插入或删除某个元素,都会引起其他元素的移动,开销大,即删除和新增效率低下。不过在数组末端插入和删除,时间消耗也是O(1)
LinkedList 是由链表实现的,也是线程不安全的。其由一个个节点组成,通过前后指针关联起来。插入和删除的时候 只要改变前后指针的指向就可以了,效率高。但是查询的时候,需要遍历,一个一个的查找,直到找到为止。效率低下。
即 ArrayList 是由数组实现,线程不安全。查找效率高。删除和新增效率低。LinkedList是由链表实现。线程不安全。查询效率低,删除和新增效率高。
Vector 也是由数组实现。有synchronized 即线程安全。因此花销大,效率比ArrayList低。如果不涉及到线程安全这块,更倾向于使用ArrayList。
选择Vector还是ArrayList
在线程安全上 上面已经说明了。
在数组容量扩充上,Vector如果超过容量,容量自增一倍。ArrayList若超出容量,容量自增50%。,Vector似乎更容易造成内存浪费。ArrayList就有利于节约内存空间
分享到:
相关推荐
java8 源码 List相关实现类的源码解析(JDK1.8) 2018.9.22- List的架构图 ArrayList 继承关系: ArrayList -> AbstractList ...ArrayList ...与Java中的数组相比,它的容量能动态增长。...LinkedList 继承关系: LinkedLis
在Java编程语言中,集合框架是处理对象组织和操作的...在多线程环境中,线程安全的实现如Vector和Hashtable是必要的,但在单线程或性能要求较高的情况下,非线程安全的实现如ArrayList、LinkedList和HashMap通常更优。
这两个类在早期的Java版本中非常常见,但在现代Java开发中,由于性能和设计考虑,它们的使用逐渐被`ArrayList`和`LinkedList`等其他集合类替代。 `Vector`类是一种动态数组,它的设计初衷是为了弥补Java中没有指针...
在Java中,虽然ArrayList和Vector类也可以用来实现堆栈,但LinkedList由于其特性,如高效地添加和删除元素,更适合作为堆栈的基础。 以下是使用LinkedList模拟堆栈的步骤: 1. 首先,我们需要创建一个LinkedList...
随着Java集合框架的发展,`ArrayList`和`LinkedList`等类在单线程环境下通常被视为更好的选择,因为它们提供了更高的性能。对于线程安全的需求,可以使用`Collections.synchronizedList`或`CopyOnWriteArrayList`来...
- **List**:有序且可重复元素的集合,如 ArrayList、LinkedList 和 Stack。 - **Set**:无序且不允许重复元素的集合,如 HashSet、LinkedHashSet 和 TreeSet。 - **Queue**:先进先出(FIFO)的数据结构,如 ...
总结了集合中常用的一点点,希望可以共享 List:LinkedList,ArrayList,Vector(Stack),Set Map:Hashtable,HashMap,WeakHashMap
List 接口的实现类主要有:ArrayList、LinkedList、Stack 以及 Vector 等。 List、Set、Map 三者的区别是:List 是一个有序容器,元素可以重复,可以插入多个 null 元素,元素都有索引。Set 是一个无序容器,不可以...
除了ArrayList和LinkedList,Java的集合框架还提供了其他类型的列表实现,如Vector和Stack。Vector与ArrayList类似,也是基于数组实现,但它线程安全,但在多线程环境下,Vector的性能通常低于非同步的ArrayList。...
List 接口的实现类有 ArrayList、LinkedList、Stack 和 Vector 等集合类。 * Map(映射):代表一个键值对的集合。 List 接口 List 接口代表一个有序的集合,可以对 List 接口代表的有序集合中每个元素的插入位置...
ArrayList Vector LinkedList 类Stack HashSet TreeSet LinkedHashSet 类 PriorityQueue HashMap TreeMap 类 LinkedHashMap 类 Hashtable 类IdentityHashMap 类WeakHashMap 类 Collections 类集合实现类特征图 泛形 ...
本文主要关注的是Java中的两种主要容器类型:Collection和Map,以及它们的一些具体实现,如List接口下的ArrayList、LinkedList和Vector,以及Map接口下的HashMap和Hashtable。 首先,我们来看List接口。List是有序...
- List接口的实现类:ArrayList、LinkedList、Stack和Vector 6. **List、Set、Map的区别**: - List:有序容器,元素可重复,有索引,如ArrayList、LinkedList和Vector。 - Set:无序容器,不允许元素重复,如...
List接口的实现类有多种,包括ArrayList、Vector、LinkedList、Stack等。 ArrayList类 ArrayList类是List接口的实现类,使用动态数组来存储对象。ArrayList类提供了多种方法来添加、删除、遍历集合中的对象。例如...
常见的List实现类包括LinkedList、ArrayList、Vector和Stack。List接口提供了额外的方法如listIterator(),返回一个ListIterator,支持双向遍历和添加、删除元素。List的特点是元素可以通过索引访问,允许存储重复...
Stack继承自Vector类,提供了push()用于压栈,pop()用于弹栈,peek()查看栈顶元素,以及其它相关方法。Stack常用于递归实现、回溯算法或处理程序调用堆栈等场景。 4. **Queue**: Queue是先进先出(FIFO)的数据...
Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理 Java集合详解2:Queue和LinkedList Java集合详解3:Iterator,fail-fast机制与比较器 Java集合详解4:HashMap和HashTable Java集合详解5:深入...