在看jdk里的collection framework这部分,小结一下:
1,Arrays.copyOf, System.arraycopy这两个方法用得非常多。
2,比较两个Object是否相等
if (o1==null ? o2 == null : o1.equals(o2))
3, equals方法一般写法
Public Boolean equals(Object o) {
If (o == this) return true;
If ( ! (o instanceof List) return false;
//比较具体数据大小
}
4,Iterator一定要会用
5,延迟初始化一定要用
6,写clone方法一般写法
Public Object clone()
{
//step 1: super.clone()得到一个基本对象
//step 2:对基本对象的各个值域进行设置
}
7,布尔变量对多个数据进行测试
boolean modified = false; modified |= remove(i.next());
8,transient和volatile的用法
9,在ArrayDeque里面,为了找到最合适的大小(2的幂数),有下面的代码
if(numElements>=initialCapacity){
initialCapacity=numElements;
initialCapacity|=(initialCapacity>>>1);
initialCapacity|=(initialCapacity>>>2);
initialCapacity|=(initialCapacity>>>4);
initialCapacity|=(initialCapacity>>>8);
initialCapacity|=(initialCapacity>>>16);
initialCapacity++;
if(initialCapacity<0)//Toomanyelements,mustbackoff
initialCapacity>>>=1;//Goodluckallocating2^30elements
}
10,删除掉的对象一定要设置为null,让GC去做剩余的清理工作
11,对double和float,一定要调用Double.doubleToLongBits和Float.floatToIntBits来做处理
12,Arrays.java里的排序算法,当数组长度小于7,则用插入排序,否则用快速排序和归并排序
13,Collections.java里的排序,都是先把集合转为数组,然后对数组进行排序,最后将排序后的数组元素放回集合中
14,一般设计锁的时候可以考虑用单独的锁对象,或者是当前类,或者是this对象
15,null转变为Null值对象
16,用反射来生成新数组
if(a.length < n) {
a = (T[])java.lang.reflect.Array
.newInstance(a.getClass().getComponentType(), n);
17,为了防止更改参数中的对象,一般参数都声明为final,然后在函数内部还可以用clone方法做一个拷贝,对拷贝进行操作。
18,HashMap的内部实现是一个桶数组,每个桶是一个Entry链表。调用get函数来获取一个元素时,首先对key的hash值进行hash运算,然后利用得到的hash值对桶数组进行索引,得到其所在的桶,然后从这个桶的首元素开始遍历比较
19,HashMap和Hashtable的区别就是,它不是线程安全的,而且允许null键和null值
20,HashSet的底层实现是一个HashMap<E,Object>,当放一个对象时,值部分是一个Null对象Object PRESENT = new Object();
21,和序列化有关的readObject方法和writeObject方法还需要进一步研究
22,Hashtable.java里的再哈希函数rehash,是先new一个新大小的桶数组,然后对原来的老桶数组里的元素,利用新容量做hash得到其在新桶里的索引,然后将其插入为其所在桶链表的首元素
分享到:
相关推荐
每日学习笔记11111111111111
JS学习笔记
已整理好基础版和高级版笔记 导出为pdf 和html 格式 界面清晰美观,均有详细目录
每日更新机器学习笔记、代码及其它内容。.zip
Study Notes日常学习笔记记录推荐使用打开Markdown简单Markdown语法整理初版日期:2021-3-28Allegro creat Gerber filesCreated date:2021-4-4GitCreated date:2021-4-4
spring学习笔记 很详细的学习笔记分享给大家,大家可以看看,绝对物有所值
stone的终身学习笔记 前言 09年 渣3本毕业,金融危机 09~10年 跑业务打杂工养活自己 10~12年 私企,企业资源管理ERP(VF、VB) 12~17年 国企,企业办公自动化OA(.NET、JavaScript) 17~20年 阿里影业,影城售票系统...
MLDL 研究生预备知识学习笔记,包含李宏毅深度学习与数字图像处理。 深度学习笔记在基础上添加自己的理解,纯自用。 MLDnotes 深度学习笔记 papernotes 论文笔记与相关知识 plans 每日计划
javascript_study 每日代码汇总,学习笔记及页面仓库
机器学习课程笔记完整版 机器学习 目录 机器学习算法课程定位、目标 定位 课程以算法、案例为驱动的学习,伴随浅显易懂的数学知识 作为人工智能领域(数据挖掘/机器学习方向)的提升课程,掌握更深更有效的解决...
此笔记为作者在有java基础的前提下,自学B站马士兵python视频所记,内容简洁方便看完视频后日后回顾,也适合自学B站马士兵python视频每日回顾。
学习英语需要积累每日一句,多多练习,多多积累,多多交流
每日英语词典 1-3期知识点 笔记 《Daily English Dictation》第1-3期知识点 1、(无听力讲解) 2、(讲解看截图)
这本书在我学习seo的过程中帮助很大,学到了很多的有用信息
算法学习笔记 通过leetcode的每日打卡,熟悉的分类算法;记录下学习过的算法题,整理成markdwn文本;并根据打卡情况制定计划,着重学习自己很难甚至没有理解的算法。习惯用Jupyter Notebook进行学习,刚好notebook...
Collection学习笔记Collection集合概述Collection集合常用方法Collection集合的遍历(迭代器)集合的使用样例 Collection集合概述 是单例集合的顶层接口 它提供了更具体的子接口的实现,如set和list. Collection集合...
每日一学 字典查找类似hash表,速度远超过for遍历列表。 for index,value in enumerate(s): .get函数两个参数时,第二个应重新字典引用,见下面使用方法 arabic += ara_rom_dict.get(s[index-1:index+1],ara_rom_...
目录 算法 每日更新 计算机操作系统 数据结构 前端工具 组件库 功能库 javascript React 打字稿 实用程序 emacs 吉特 多路复用器
在Hacktiv8的全栈新手训练营期间,进行个人学习笔记(每日挑战,实时代码等)。 工具: 文本编辑器:Visual Studio Code 终端机:Git bash,MacOS终端机,iTerm 版本控制:Git 回购经理:Github 包管理器:NPM...
已经很久都没有更新过这个仓库了,由于中间经历过一些事情变的懒惰了,之后会继续更新这个仓库,会添加一些自己学习的笔记以及每日的简短日记,跟随 Kiprey 的脚步,向 Kiprey 学习,近期应该不会更新与虚拟化和二...