1.HashMap实现原理?参数?

  • 原理

    • hashmap是数组和链表的结合体,数组每个元素存的是链表的头结点
    • 往hashmap里面放键值对的时候先得到key的hashcode,然后重新计算hashcode,(让1分布均匀因为如果分布不均匀,低位全是0,则后来计算数组下标的时候会冲突),然后与length-1按位与,计算数组出数组下标
    • 如果该下标对应的链表为空,则直接把键值对作为链表头结点,如果不为空,则遍历链表看是否有key值相同的,有就把value替换,没有就把该对象最为链表的第一个节点,原有的节点最为他的后续节点
  • 参数

    • 初始容量16,达到阀值扩容,阀值等于最大容量*负载因子,扩容每次2倍,总是2的n次方

2.HashMap HashTable区别?,Hashmap key可以是任何类型吗?

3.HashMap ConcurrentHashMap区别?ConcurrentHashMap如何保证线程安全?

ConcurrentHashMap使用分段锁技术,将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问,能够实现真正的并发访问。

3.LinkedList ArrayList区别?

  • ArrayList基于数组,LinkedList基于链表
  • ArrayList查找快,LinkedList插入删除快
  • 随机查找频繁用ArrayList,插入删除频繁用LinkedList

4.ArrayList,Vector,HashMap,Hashtable扩容机制?

  • arraylist,初始容量10,(oldCapacity * 3)/2 + 1
  • vector,初始容量10,oldCapacity * 2
  • hashmap,初始容量16,达到阀值扩容,为原来的两倍
  • hashtable,初始容量11,达到阀值扩容,oldCapacity * 2 + 1

    5.concurrent包?

6.集合框架图

results matching ""

    No results matching ""