- 博客(9)
- 收藏
- 关注
原创 java实现单链表
LeetCode题目:设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中第 index 个节点的值。如果索...
2019-03-28 20:11:26 172
原创 ByteArrayInputStream and ByteArrayOutputStream 源码学习笔记
之前看过一篇文章,说是输入流主要从文件file,字节数组,StringBuffer,其他线程,已经被序列化的对象读取数据,发现功能不是特别完善,为减少类的创建,使用装饰者模式,使用FilterInputStream去派生装饰者类,例如BufferedInputStream,提供缓冲功能。看ByteArrayInputStream和ByteArrayOutputStream源码时,给我感觉是完全没有...
2019-03-14 16:51:43 249
原创 BufferedInputStream方法测试
这篇博客主要是测试验证上篇BufferedInputStream一些主要方法源码的解析(skip,reset,fill,read),配合上篇博客使用。测试结果就不贴了,因为会将测试源码贴出来,感兴趣的可以复制过去运行,但需要改一下文件名,用自己的文件名,我自己的测试文件包含了12492字节数,我觉得测试文件大于1500就可以运行这个源码不出问题了。测试使用技术:使用反射拿到BufferedInp...
2019-03-09 22:42:33 313
原创 BufferedInputStream源码学习笔记
BufferedInputStream 带有缓冲功能,支持标记(mark),最重要的函数是fill(),为类私有,可实现将部分数据从输入流填充到缓冲区(一个byte[]保存),它也能将缓冲区扩大。它是一个装饰类(装饰者模式在这里不做介绍)。BufferedInputStream定义:public class BufferedInputStream extends FilterInputStre...
2019-03-09 17:49:10 235
原创 ArrayList源码解析
之前看过ArrayList源码(jdk l.8),但没有去记录它,今天想了一下还是应该记录一下。ArrayList定义:从类定义来看:支持泛型,有序集合,可随机访问,可克隆,可序列化public class ArrayList<E> extends AbstractList<E> implements List&
2019-03-04 22:47:18 255
原创 HashMap中的迭代器实现与HashSet实现浅析
因为HashSet底层是使用HashMap实现的,或者说它只使用key,是一个删减版的HashMap,所以只简单讲一下它的实现。先看一下的主要数据成员(可以很清晰的看到它使用一个final修饰的Object对象作为value,这个值是不会变的,所以不能往里面存其他的value):private transient HashMap<E,Object> map; private ...
2019-03-04 12:25:42 801
原创 java 泛型无界通配符
首先说下泛型的好处:1.类型安全,在编译期就能发现类型转换错误,减少代码错误,提高可读性。举个很简单的例子,拿ArrayList来说,底层使用Object[]保存数据,所以它可以保存任何类型的数据,当取ArrayList中的数据时,集合中数据都是一样的,被Object类型引用着,所以这个元素只能调用覆盖Object的方法或者Object的方法,这往往是不够,就像你有自己的特有东西不能用,这...
2019-03-03 23:18:31 1488
原创 HashMap部分源码解析
首先说下hashmap的优点:根据key找到元素位置取出元素,若不考虑冲突,可实现随机取值(时间复杂度为1),底层数据结构为数组,为解决hash冲突,使用拉链法,所以数组中存的是链表的首节点,冲突后构成一条单链表;为了提高查询速率,当链表节点个数符合特定条件,会把链表转化成红黑树。对比ArrayList和LinkedLi,它们都需要去遍历集合中元素,因为不知道这个值是否存在以及存在哪个位置。...
2019-03-01 21:24:11 248
原创 LinkedList浅析
LinkedList主要数据成员:size :链表大小 ;first: 持有第一个节点引用;last持有链表最后一个节点引用,存储结构为Node,根据Node可以知道这是一个双向链表,可以双向遍历链表。LinkedList:和ArrayList一样,线程不安全。它也提供了下标访问和设置链表的方法,它不像ArrayList一样(ArrayList存储结构为一个object[]),Array...
2019-02-26 16:08:22 225
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人