一、Collections和Collection的区别
- java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。
- java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。
二、Map与Collection的关系
Collection中存储了一组对象,而Map存储键值对。两者没有继承关系。
三、Hashtable与HashMap的区别
- Hashtable的方法是同步的,HashMap则是非同步的,所以在多线程场合要手动同步HashMap,这个区别就像Vector和ArrayList一样。
- Hashtable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。
- Hashtable比HashMap多一个elements方法用于遍历。
- Hashtable使用Enumeration,HashMap使用Iterator。
- 哈希值的使用不同,Hashtable直接使用对象的hashCode,而HashMap重新计算hash值,而且用与代替求模。
- Hashtable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。
四、Java中有哪些集合的接口
-
Collection(接口,集合)
├List(接口,列表,有序,可以重复,可以为null)
│├ArrayList(类,非同步,基于Array,适合查询)
│├LinkedList(类,非同步,基于双向链表,适合增删)
│└Vector(类,同步,基于Array,性能比ArrayList差,适合查询)
│ └Stack(类)
├Set(接口,集,基于Map,不能重复,最多一个null)
│├HashSet(类)
││└LinkedHashSet(类)
│└SortedSet(接口)
│ └TreeSet(类)
└Queue(接口)
└Deque(接口)
-
Map(接口,映射,无序,键值对)
├Hashtable(类,同步,用Enumeration遍历,不推荐,不能为null)
├HashMap(类,非同步,用Iterater遍历,推荐,可以为null)
│├LinkedHashMap(类)
├WeakHashMap(类,key弱引用,无引用时回收,可以为null)
└SortedMap(接口)
└TreeMap(类)
持续更新,持续来访。