blocking queue:说明不接受null元素,可能是容量有限的,表示不再添加项目实现是线程安全的。
9)PriorityQueue:基于优先级堆的无限优先级queue。优先级队列的元素根据它们的有序natural ordering或由一个Comparator在队列构造的时候提供,这取决于所使用的构造方法。优先级队列不允许null元素,自然排序的优先级队列也不允许插入不可比较的对象(可能导致ClassCastException)。此实现不同步,多线程不应同时访问PriorityQueue实例,而应该使用PriorityBlockingQueue类(线程安全)。
10)ConcurrentLinkedQueue:基于链接节点的无界并发deque(deque是双端队列),并发插入,删除和访问可以跨多个线程安全执行,不允许null元素。
7)AbstractSet类实现了set接口,HashSet继承AbstractSet类,同时实现set接口。
6)stack堆栈类,继承了vector.
7)enumeration枚举,相当于迭代器
集合的实现问题图:

Map:

8)对于线程不安全且使用迭代器的集合,采用快速失败机制(fail-Fast)。多线程访问中如果使用迭代器过程中,有其他线程修改了集合对象结构,可能会抛出ConcurrentModificationException,所谓快速失败机制。在迭代器创建之后,如果从结构上对映射进行修改,除非使用迭代器本身的remove方法。
9)HashTable和HashMap的区别:
1)继承不同
public class HashTable extends Dictionary implements Map
public class HashMap extends AbstractMap implements Map
2)同步问题
HashTable中方法是同步的,而HashMap中方法在缺省的情况下是同步的,需要自己添加同步。
3)null的问题:
HashTable中,key、value都不允许出现null值,
HashMap中,null可以作为键,这样的键只有一个,可以有多个value=null,需要自己增加同步。
4)遍历方式不同:
HashTable、HashMap都使用了Iterator,而由于历史原因,HashTable还使用了Enumeration的方式,
5)哈希值不同:
HashTable直接使用对象的hashcode,而HashMap重新计算hash值。
6)初始化和扩容:
HashTable和HashMap内部实现都是数组初始化大小和扩容方式。
HashTable的Hash数组默认为11,扩容为old*2+1;
HashMap的hash数组默认值为16,而且一定是2的指数扩容。
Java.util.Collection是一个集合接口,提供了对集合对象进行基本操作的通用接口方法,Collection接口的意义是为各种具体的集合提供最大化的统一操作方式。
Java.util.Collections是一个包装类,包括有各种有关集合操作的静态方法,不能实例化,就是一个工具类,服务于Java的Collection框架。
Collections类提供了sychronizedXxx()方法,可以将指定集合包装成线程安全的集合。
比如:List list = Collections.synchronizedList(new ArrayList());
Set set = Collections.synchronizedSet(new HashSet());
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-66099-3.html
但对有损我国主权的行为
@LINX11mv的意思表达了她们的心情与决心欢迎归来