您好,欢迎访问代理记账网站
移动应用 微信公众号 联系我们

咨询热线 -

电话 15988168888

联系客服
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

【java基础】

【简述java的set】
set即集合,不允许元素重复且无序,有三种实现方式
HashSet通过HashMap实现,HashMap的Key就是HashSet存储的元素。Value系统自定义一个名为PRESENT的Object类型常量,判断元素是否相同时,比较hashCode和equals,查询o1
LinkHashSet继承HashSet,通过LinkedHashMap实现,使用双向链表维护元素插入顺序
TreeSet通过TreeMap实现,底层RBT,添加元素到集合时按照比较规则插入合适的位置,保证仍然有序,查询Ologn

【简述JAVA的HaspMap】
jdk8改成数组 + 链表/RBT。
成员变量:存储数据的table数组,元素数量size,加载银子loadFactor
kv对,k对应的hash值用来计算数组下标,如果两个key的hash一样,就冲突,放到一个链表
table数组记录hashmap数据,每个下标一个链表,哈希冲突的都放在一条链上
node节点包括:key value next hash

若当前数据/总数据容量》 负载因子,进行扩容
默认初始容量15,扩容容量是2的幂次方,最大容量1 << 30,默认因子0.75

【为什么hashMap Thread Unsafe】
jdk1.7 hashmap采用头插法插入,因此并发情况下会导致环形链表,产生死循环
jdk改成尾插法,但是并发的put也会导致前一个key被后一个覆盖
由于hashmap有扩容,A线程进行扩容后,b线程执行get出现失误


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进