标签:
实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,AbstractList,AbstractMap等,而点线边框的是接口,比如Collection,Iterator,List等。
上述所有的集合类,都实现了Iterator接口,这是一个用于遍历集合中元素的接口,主要包含hashNext(),next(),remove()三种方法。它的一个子接口LinkedIterator在它的基础上又添加了三种方法,分别是add(),previous(),hasPrevious()。也就是说如果实现Iterator接口,那么在遍历集合中元素的时候,只能往后遍历,被遍历后的元素不会在遍历到,通常无序集合实现的都是这个接口,比如HashSet,HashMap;而那些元素有序的集合,实现的一般都是LinkedIterator接口,实现这个接口的集合可以双向遍历,既可以通过next()访问下一个元素,又可以通过previous()访问前一个元素,比如ArrayList。
两者都是有序的,允许重复元素,在定位元素、增删元素上效率不同
HashSet无序不可重复
TreeSet比HashSet有所改进,是一个有序的集合(默认使用红黑树完成排序)。这里排序是通过元素比较为依据,不是插入的顺序。
LinkedHashSet在HashSet的基础上又形成了双向链表,可以记住插入的顺序
HashMap键必须唯一,值可以重复,没有顺序
TreeMap在HashMap的基础上有所改进,通过比较键值来实现排序,是一个有序的键值对。
LinkedHashMap在HashSet的基础上又形成了双向链表,按照访问顺序,对映射条目进行调整,每次被访问的条目都会自动移动到双向链表的尾部
以弱键实现的基于哈希表的 Map。在 WeakHashMap中,当某个键不再正常使用时,将自动移除其条目。
使用短时间内就过期的缓存时最好使用weakHashMap,它包含了一个自动调用的方法expungeStaleEntries,这样就会在值被引用后直接执行这个隐含的方法,将不用的键清除掉。
参考:
http://blog.csdn.net/liulin_good/article/details/6213815
《java核心技术 卷I 基础知识》
标签:
原文地址:http://www.cnblogs.com/mingziday/p/4982803.html