java基础

1.java集合类

2.java IO类

3.java 异常

4.java 多线程

5.java 网络编程

6.java 封装、interface与abstract

7.java反射、java动态代理

 

一、集合类

框架图如下:图一

要点:

1.线程安全 Vector、Hashtable、ConcurrentHashMap(java.util.Concurrent)

2.HashMap底层

负载因子 0.75,初始大小16,超过16*0.75 resize()扩大一倍;

数据结构 Entry(Map.Entry)数组(table)+链表(Entry包含key,value,next),put先计算key的hash值(取余数,但是是h&(table.length-1))找到对应的entry,再在entry中遍历是否有该key,若有则更新value值,若没有则新建个Entry并放置于对应链表头部。

遍历hashMap,map.entrySet()方法,map.keySet()方法,Iterator itr = map.entrySet.iterator();

jdk 1.8优化   优化了高位运算算法,resize()不重新计算所有hash值移动所有元素,只算部分、移动部分,并且移动的时候不再倒转链表了。

       当链表元素大于8时采用红黑树的数据结构

3.ConcurrentHashMap底层

分段锁(Segment为可重入锁ReentrantLock)数组,每个segment里面有HashEntry数组,每个hashEntry维护一个链表

put()先定位segment并获取锁,再在segment里面进行插入操作(扩容只对segment进行而不对整个concurrenthashmap进行)。

get ()共享变量如c里value、next都定义为volatile,保证多线程读,单线程写。

4.HashMap\HashTable\ConcurrentHashMap区别

hashMap key可为null,value可为null

hashTable key不可为null,方法全部由synchronized修饰。

二、java io  类

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值