发表于: 2017-12-27 23:38:48

1 555



今天完成的事情:

1. 完善接口文档

2. 学习Map

明天计划的事情

1. 小课堂

2. 和前端对接口

3. SQL语句


遇到的问题:



收获:

1. 完善接口文档


2. map

与运算
可以看作上下进行乘法
1001 & 1111 = 1001
HashMap<String,Student> hashMap = new HashMap<String, Student>();
hashMap.put("张三",student1);
put方法:
public V put(K key, V value) {
    return putVal(hash(key), key, value, false, true);
}
hash方法:
static final int hash(Object key) {
    int h;
    return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
}
hash( ),根据key 计算出key对应的hash值,但hash值并不是要存储的真正的位置,相当于key的别名
tab[i = (n - 1) & hash]
n为数组的长度,hash为key对应的hash值。i才是真正的地址所在
如何保证数值不越界:?
n为数组长度,应为2的幂次方,-1后二进制必然为连续的1,在hash和n-1做与运算的时候必然必能大于1111...
默认初始数组长度为16,但是size的逻辑长度没有put为0
put后先看是否有数组,没有就初始化。
算出key对应出的数组,查看数组否为空,为空就把key-value插入,如果不为空
      查看两个key对应的hash值和value是否相等 相等就把node指向同一存储空间。
      不相同就看该单链表下一个node, , 看两个key对应的hash值和key是否相等 相等就把node指向同一存储空间。
      node为空就存进去,不为空看key对应的hash值和key是否相等 相等就跳出本次循环,然后把e指向的node给p,开始下一次驯环,直到第8次循环,就把单链表换为红黑树。


任务进度:接口文档

任务开始时间:2017-12-26

DOME时间:2018-2-9




返回列表 返回列表
评论

    分享到