美文网首页
java面试复习2

java面试复习2

作者: 原点_da4e | 来源:发表于2022-02-16 19:08 被阅读0次

    list 下 arraylist ,linkedlist实现和区别

    1.arraylist 使用的Object数组 ,linkedlist是双向链表
    arraylist 增删慢 , 查询快,
    linkedlist 增删快 , 查询慢 ,
    线程都不安全。
    2.arraylist 扩容
    初始化是一个空数组,
    第一次扩容为10.
    每次扩容之后都会变味原来的1.5倍左右

    hashmap 实现 ,扩容

    1.7之前是数组和链表 ,采用头插法
    1.8之后链表长度大于8时,将链表转为红黑树 ,如果数组长度小于64 , 选择数组扩容,使用尾插法。
    初始大小为16,HashMap中的元素个数之和大于负载因子*当前容量的时候就要进行扩充,容量变为原来的 2 倍
    设置初始容量(初始容量 = 预知数据量 / 加载因子)
    线程不安全

    HashMap扩容的时候为什么是2的n次幂

    (n-1)&hash
    因为%操作除数是2的幂次等价于与除数减一的操作

    hashmap put方法

    key hash算法与与运算得出
    数组下标为空时 , node放入
    数组下标不为空时,jdk1.7 jdk1.8

    HashMap源码中在计算hash值的时候为什么要右移16位

    让元素在HashMap中更加均匀的分布

    线程安全的集合

    Vector ,hashtable ,concurrenthashmap,
    Stack

    concurrenthashmap

    1.7时使用分段锁segment,每把锁只锁容器里部分数据
    1.8 node数组 + 链表 + 红黑树 并发用synchronized 和cas , synchronized 只锁当前链表或红黑二叉树的首结点。

    hashmap 和 hashtable区别

    1.线程
    2.空值
    hashtable 不允许 null key null value
    3.初始大小 hashtable 11 每次扩容变为 2n+1
    hashmap 16 变为两倍

    4.底层数据结构
    5.效率

    hashmap 和 Treemap的区别

    1.hash 无序 ,tree 有序
    2.hash 继承 abstractmap tree 继承 sortedmap

    相关文章

      网友评论

          本文标题:java面试复习2

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