美文网首页
集合相关面试题

集合相关面试题

作者: 佩佩691 | 来源:发表于2017-08-28 14:06 被阅读52次

    集合相关面试题

    • HashMap的扩容机智

    新建了一个HashMap的底层数组,长度为原来的两倍,而后调用transfer方法,将旧HashMap的全部元素添加到新的HashMap中,扩容是一个相当耗时的操作,因为它需要重新计算这些元素在新的数组中的位置并进行复制处理。因此,我们在用HashMap时,最好能提前预估下HashMap中元素的个数,这样有助于提高HashMap的性能。

    • HashMap可以存入Key为Null的键么

    可以,如果存入为null的键,永远都放在table[0]的头节点的链表中。

    • HashMap中put值的时候如果发生了冲突,是怎么处理的?

    JDK使用了链地址法,hash表的每个元素又分别链接着一个单链表,元素为头结点,如果不同的key映射到了相同的下标,那么就使用头插法,插入到该元素对应的链表。

    • HashMap与HashTable的区别
    1. 继承关系上:HashTable是继承的Dictionary类,HashMap是实现的Map接口,所以HashTable老一点
    2. 线程安全方面:HashMap是线程不安全的,所以在速度方面比HashTable要快,JDK5之后引入ConcurrentHashMap,可以在多线程中使用,还可以使用
      Map m = Collections.synchronizeMap(hashMap);让HashMap同步
    3. 存值方面
      HashMap可以存入Key为null的键
    • ArrayList和Vector的区别
    1. ArrayList线程不安全,效率更高
    2. ArrayList容量不足是增加50%,Vector翻倍
    3. Vector可以设置增长因子,而ArrayList不可以

    相关文章

      网友评论

          本文标题:集合相关面试题

          本文链接:https://www.haomeiwen.com/subject/fozwdxtx.html