随笔分类 - hashMap
摘要:HashMap为了存取高效,要尽量较少碰撞,就是要尽量把数据分配均匀,每个链表长度大致相同,这个实现就在把数据存到哪个链表中的算法; 这个算法实际就是取模,hash%length,计算机中直接求余效率不如位移运算,源码中做了优化hash&(length-1), hash%length==hash&(
阅读全文
摘要:import java.util.*; public class Bs { //Integer.highestOneBit((number - 1) 保证结果是最近偶数 int a1 = 1-1;//0 int b1 = 3-1;//2 int c1 = 5-1;//4 int d1 = 8-1;//7 ...
阅读全文
摘要:上篇文章《LinkedList其实就那么一回事儿之源码分析》介绍了LinkedList, 本次将为大家介绍HashMap。 在介绍HashMap之前,为了方便更清楚地理解源码,先大致说说HashMap的实现原理, HashMap 是基于数组 + 链表实现的, 首先HashMap就是一个大数组,在这个
阅读全文
摘要:分析: Hi.java Hs.java 此时结果为:
阅读全文
摘要:计算过程已1<<30为例,首先把1转为二进制数字 0000 0000 0000 0000 0000 0000 0000 0001 然后将上面的二进制数字向左移动30位后面补0得到 01000000 00000000 00000000 00000000(共计32位,是int的最大长度,第一位标示的是符
阅读全文
摘要:今天看HashMap的底层实现,发现HashMap的最大容量规定为: // 最大容量(必须是2的幂且小于2的30次方,传入容量过大将被这个值替换) static final int MAXIMUM_CAPACITY = 1 << 30; 当看到 1<<30 时,对“<<” 有点模糊,当了解“<<”的
阅读全文
摘要:http://www.runoob.com/java/java-operators.html
阅读全文
摘要:public V put(K key, V value) { //假如table为空 if (table == EMPTY_TABLE) { inflateTable(threshold); } //假如键为空 if (key == null) return putForNullKey(value); int has...
阅读全文
摘要:接口、接口实现、调用 这里只是对一些不常见的语法和概念进行一个大概的认知 可能并不是完全正确的
阅读全文
摘要:Java中多态是个很难理解的概念,但同时又是非常重要的概念,Java三大特性(封装、继承、多态)之一,我们从字面上理解,就是一种类型的多种状态,一下通过卖小汽车的例子再次说明什么是多态,其中利用到了接口。 代码实例: 测试类: 注意事项总结: 继承是多态得以实现的基础。从字面上理解,多态就是一种类型
阅读全文
摘要:多态1.JAVA里没有多继承,一个类之能有一个父类。而继承的表现就是多态。一个父类可以有多个子类,而在子类里可以重写父类的方法(例如方法print()),这样每个子类里重写的代码不一样,自然表现形式就不一样。这样用父类的变量去引用不同的子类,在调用这个相同的方法print()的时候得到的结果和表现形
阅读全文
摘要:说明:不一定准确,但是最快理解。 final: final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变。 final修饰的属性跟具体对象有关,在运行期初始化的final属性,不同对象可以有不同的值。 final修饰的
阅读全文
摘要:table 还是第二行代码 有两个小问题: 1、static final transient 这几个关键字的意思 2、transient Entry<K,V>[] table = (Entry<K,V>[]) EMPTY_TABLE; 这句话的意思
阅读全文
摘要:接下来的目标是: 1、java怎么模拟一个单向链表 2、怎么存储数据才能利用上数组(有下标、易查询)和链表(有下个节点的标号,易增删)的优点
阅读全文
摘要:看到hashMap的put方法的第一行代码就懵逼了 就不继续往下看了 用简单的代码还原第一行代码 TsInter.java 接口 为什么要使用接口,比如写文章一样,我先列个大纲 TsSer.java 实现接口 大纲列好了,就要填充到里面内容了 这里实现接口的方式是个抽象类(抽象:从具体事物抽出、概括
阅读全文