Vector 同 ArrayList 一样,都是基 于数组实现的,只不过 Vector 是一个线程安全的容器,它对
内部的每个方法都简单粗暴的上锁,避免多线程引起的安全性问题,但是通常这种同步方式需
要的开销比较大,因此,访问元素的效率要远远低于 ArrayList。
还有一点在于扩容上,ArrayList 扩容 后的数组 长度会增 加 50%, 而 Vector 的扩容长度后数 组
会增加一倍。
LinkedList
LinkedList 是一个双向链表,允许存储任何元素(包括 null)。它的主要特性如下:
LinkedList 所有的操作都可以表现为双向性的,索引到链表的操作将遍历从头到尾,视哪
个距离近为遍历顺序。
注意这个实现也 不是线程安全 的,如果多个 线程并发访问 链表,并且至少其中的一个线
程修改了链表的结构,那么这个链表必须进行外部加锁。
HashMap
HashMap 是一个利用哈希表原理来存储元素的集合,并且允许空的 key-value 键值对。
HashMap 是非线程安全的,也就是说在多线程的环境下,可能会存在问题,而 Hashtable 是
线程安全的容器。
HashMap 也支持 fail-fast 机制。HashMap 的实例有两个参数影响其性能︰初始容量和加载因
子。可以使用 Collections.synchronizedMap(new HashMap( . ..)) 来构造一个线程安
全的 HashMap。
此外还有很多集合子类,这里不再一一举例。
集合遍历:为什么要用迭代器
删除元素怎么删
先上代码
(/)