• 阅读HashMap——jdk7时遇到的问题记录


    今天看hashMapJDK7版,水很深,看的也痛苦~推一个博主:http://www.cnblogs.com/xrq730/

    看了源码,才发现自己基础真的很薄弱,虽然当初也是下了很多的经历,但是毕竟大学浪费了好多时间,底子自然也就不够,无厚积而又无薄发,自勉。

    简单的一些总结:

    1、基础知识回顾

    a、位运算符:与或与亦或(源自百度

    “按位异或”运算符,是双目运算。
    按位异或运算符^

    逻辑运算均是按位进行操作,真值表如下:

    AND (位与&) OR ( 位或| ) XOR ( 位异或^ )  
    1 & 1 = 1

    1 & 0 = 0

    0 & 1 = 0

    0 & 0 = 0
     1 | 1 = 1

    1 | 0 = 1

    0 | 1 = 1

    0 | 0 = 0
     1 ^ 1 = 0

    1 ^ 0 = 1

    0 ^ 1 = 1

    0 ^ 0 = 0
     
    例如:10100001^00010001=10110000
    0^0=0,0^1=1   0异或任何数=任何数

    1^0=1,1^1=0   1异或任何数=任何数取反

    任何数异或自己=把自己置0

    b、左移、右移、逻辑左移(摘抄自博文:http://annegu.iteye.com/blog/539465     以及百度):

    ============================================================
    43210      位数
    --------
     1010      十进制:10     原始数         number
    10100      十进制:20     左移一位       number = number << 1;
     1010      十进制:10     右移一位       number = number >> 1
    ============================================================

    4<<2 中4的进制表示法为0000 0100,左移2位后为0001 0000,则结果为1*2^4=16

    c、进制之间的转换(自己整理了下)

    首先是最常用的二进制与十进制之间的转换:

    1、二进制转换为十进制:

     正数: 100101转换为十进制,方法为:1*2的5次方+0*2的4次方+0*2的3次方+1*2的2次方+0*2的1次方+2*1的0次方(其中规律很简单,应该很清楚的就能总结出来,我就不去描述了)

     负数:忘了(会补充)

    2、十进制转换为二进制:

    10除以2等于5余数为0,5除以2为2余数为1。。。算完后从下往上取,是1010

    基础先到这里,有些理解不透彻的地方如位移运算符的符号位在逻辑右移时补0.。。。还有进制转换中负数的部分忘记了,记录下以后再补,补完总结下hashmap源码,这就是我这篇博文需要写的。

    =============================================================2017-10-25

    一些基础的定义:

    数组:内存中开辟的一块连续的区域

    链表:一个对象中,持有下一个对象的内存地址

    哈希表(图):数组+链表结构。

    存储方式:

    通过key的哈希值h&(map.lenth-1)获取到   数组中的一个位置,然后以链表的形式将数据存储

    这里map.length要为2的次幂时,(map.lenth-1)的低位为1

    2的4次方 =16 -1 =15            1111

    2的5次方 =32-1=31              11111

    &

    hash(eg:10101)

    结果:以低位为准,一定不会越界

    目的:1、分布的位置不会下标越界

                2、分布的更加均匀,提升性能

    扩容:系数0.75

    数组使用超过0.75(测算)时,2倍扩充(保证下标仍以低位为准)。

    扩容时元素会重新分配,消耗资源与速度。

  • 相关阅读:
    tomcat并发个题-未解决
    tengine安装
    nginx获得自定义参数
    nginx限流
    树形背包——hdu1561
    树形dp专题
    单调队列——P1725 琪露诺
    单调队列,dp——POJ
    记忆化搜索——HDU
    区间dp——POJ
  • 原文地址:https://www.cnblogs.com/the-fool/p/11054200.html
Copyright © 2020-2023  润新知