Java 集合框架 相关问题 整理

一、Collections和Collection的区别

  1. java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。
  2. java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。

二、Map与Collection的关系

    Collection中存储了一组对象,而Map存储键值对。两者没有继承关系。

三、Hashtable与HashMap的区别

  1. Hashtable的方法是同步的,HashMap则是非同步的,所以在多线程场合要手动同步HashMap,这个区别就像Vector和ArrayList一样。
  2. Hashtable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。
  3. Hashtable比HashMap多一个elements方法用于遍历。
  4. Hashtable使用Enumeration,HashMap使用Iterator。
  5. 哈希值的使用不同,Hashtable直接使用对象的hashCode,而HashMap重新计算hash值,而且用与代替求模。
  6. Hashtable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。

四、Java中有哪些集合的接口

  1. Collection(接口,集合)
    ├List(接口,列表,有序,可以重复,可以为null)
    │├ArrayList(类,非同步,基于Array,适合查询)
    │├LinkedList(类,非同步,基于双向链表,适合增删)
    │└Vector(类,同步,基于Array,性能比ArrayList差,适合查询)
    │ └Stack(类)
    ├Set(接口,集,基于Map,不能重复,最多一个null)
    │├HashSet(类)
    ││└LinkedHashSet(类)
    │└SortedSet(接口)
    │ └TreeSet(类)
    └Queue(接口)
     └Deque(接口)
  2. Map(接口,映射,无序,键值对)
    ├Hashtable(类,同步,用Enumeration遍历,不推荐,不能为null)
    ├HashMap(类,非同步,用Iterater遍历,推荐,可以为null)
    │├LinkedHashMap(类)
    ├WeakHashMap(类,key弱引用,无引用时回收,可以为null)
    └SortedMap(接口)
     └TreeMap(类)

1 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

验证码已失效,请刷新验证码