阅读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倍扩充(保证下标仍以低位为准)。
扩容时元素会重新分配,消耗资源与速度。
阅读HashMap——jdk7时遇到的问题记录的更多相关文章
- 编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时会产生Additional information: 阅读器关闭时尝试调用 Read 无效问题,解决方法与解释
在自学杨中科老师的视频教学时,拓展编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时 会产生Additional information: 阅读器关闭时尝试调用 ...
- ON DUPLICATE KEY UPDATE 当记录不存在时插入,当记录存在时更新
MySQL 当记录不存在时插入,当记录存在时更新网上基本有三种解决方法.第一种:示例一:插入多条记录假设有一个主键为 client_id 的 clients 表,可以使用下面的语句:INSERTINT ...
- 在使用cognos时遇到的问题记录帖
在使用cognos时遇到的问题记录帖 1.开一个project 报无法访问位于 URL 的服务: http://localhost:80/ibmcognos/cgi-bin/cognos.cgi?b_ ...
- 【转】MySQL 当记录不存在时insert,当记录存在时update
MySQL当记录不存在时insert,当记录存在时更新:网上基本有三种解决方法 第一种: 示例一:insert多条记录 假设有一个主键为 client_id 的 clients 表,可以使用下面的语句 ...
- MyBatis 插入时返回刚插入记录的主键值
MyBatis 插入时返回刚插入记录的主键值 一.要求: 1.数据库表中的主键是自增长的,如:id: 2.获取刚刚插入的记录的id值: 二.源代码: 1.User.java package cn.co ...
- Java中HashMap 初始化时容量(参数)如何设置合适?
问题引入 注:本文代码源自java 9. 阿里的插件对于初始化HashMap时,调用无参构造方法,提示如下: 那么问题来了,如果已知需要向 map 中 put n次,那么需要设定初始容量为多少? 单纯 ...
- MySQL 当记录不存在时insert,当记录存在时update(ON DUPLICATE KEY UPDATE, REPLACE语句)
MySQL 当记录不存在时insert,当记录存在时更新 网上基本有三种解决方法. 第一种:示例一:insert多条记录 假设有一个主键为 client_id 的 clients 表,可以使用下面的语 ...
- MySQL 当记录不存在时insert,当记录存在时update
MySQL当记录不存在时insert,当记录存在时更新:网上基本有三种解决方法 第一种: 示例一:insert多条记录 假设有一个主键为 client_id 的 clients 表,可以使用下面的语句 ...
- SqlDataReader阅读器关闭时尝试调用 HasRows 无效
SqlDataReader阅读器关闭时尝试调用 HasRows 无效 原创长白山上放羊娃 发布于2018-07-25 00:29:27 阅读数 538 收藏 展开 在SqlHelper中封装好的Sq ...
随机推荐
- go语言刷leetcode - 53 Maximum Subarray
package main import ( "fmt" "math" ) func maxSubArray(nums []int) int { var larg ...
- 图像处理与计算机视觉的 topics
光学图像(optical image): the apparent reproduction of an object, formed by a lens or mirror system from ...
- [Erlang危机](4.4)命名管道
原创文章,转载请注明出处:server非业余研究http://blog.csdn.net/erlib 作者Sunface . .To connect to the node, you use the ...
- 创建一个显示所有预定义WPF颜色的ListBox
原文 Creating a ListBox that Shows All Predefined WPF Colors 在WPF中,您可以使用Colors类访问一系列预定义颜色,这些颜色定义为Color ...
- [Hibernate系列—] 3. 映射文件和使用SchemaExport制作自己主动Schema
自己定义映射文件 这里的映射文件指的是相应到数据库表的xml 的定义文件. 相应的每一个数据库表栏位, 能够定义的属性有: 属性名 类型 Description length number 栏位的长度 ...
- WPF 图形绘制 及各种线帽、箭头的实现
原文:WPF 图形绘制 及各种线帽.箭头的实现 /// <summary> /// 矩形类 /// </summary> public sealed ...
- gitlab 添加文件到新建git库
1. 账号拥有master权限 2.执行操作 git clone git@IP:Group/project.gitcd projecttouch README.mdgit add README.mdg ...
- PostgreSQL9.3:JSON 功能增强 根据PQ中文论坛francs 给出的东西结合自己的摸索总结下
在 PostgreSQL 9.2 版本中已经支持 JSON 类型,不过支持的操作非常有限,仅支持以下函数 array_to_json(anyarray [, pretty_bool]) row_ ...
- Android各版本对应的SDK和JDK版本
原文:Android各版本对应的SDK和JDK版本 一.Android各版本对应的SDK版本: 平台版本 SDK版本 版本名称 Android 8.0 26 Oreo Android 7.1 25 N ...
- python 编码转换 专题
主要介绍了python的编码机制,unicode, utf-8, utf-16, GBK, GB2312,ISO-8859-1 等编码之间的转换. 常见的编码转换分为以下几种情况: 自动识别 字符串编 ...