自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 java实现单链表

LeetCode题目:设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中第 index 个节点的值。如果索...

2019-03-28 20:11:26 132

原创 ByteArrayInputStream and ByteArrayOutputStream 源码学习笔记

之前看过一篇文章,说是输入流主要从文件file,字节数组,StringBuffer,其他线程,已经被序列化的对象读取数据,发现功能不是特别完善,为减少类的创建,使用装饰者模式,使用FilterInputStream去派生装饰者类,例如BufferedInputStream,提供缓冲功能。看ByteArrayInputStream和ByteArrayOutputStream源码时,给我感觉是完全没有...

2019-03-14 16:51:43 201

原创 BufferedInputStream方法测试

这篇博客主要是测试验证上篇BufferedInputStream一些主要方法源码的解析(skip,reset,fill,read),配合上篇博客使用。测试结果就不贴了,因为会将测试源码贴出来,感兴趣的可以复制过去运行,但需要改一下文件名,用自己的文件名,我自己的测试文件包含了12492字节数,我觉得测试文件大于1500就可以运行这个源码不出问题了。测试使用技术:使用反射拿到BufferedInp...

2019-03-09 22:42:33 275

原创 BufferedInputStream源码学习笔记

BufferedInputStream 带有缓冲功能,支持标记(mark),最重要的函数是fill(),为类私有,可实现将部分数据从输入流填充到缓冲区(一个byte[]保存),它也能将缓冲区扩大。它是一个装饰类(装饰者模式在这里不做介绍)。BufferedInputStream定义:public class BufferedInputStream extends FilterInputStre...

2019-03-09 17:49:10 192

原创 ArrayList源码解析

之前看过ArrayList源码(jdk l.8),但没有去记录它,今天想了一下还是应该记录一下。ArrayList定义:从类定义来看:支持泛型,有序集合,可随机访问,可克隆,可序列化public class ArrayList<E> extends AbstractList<E> implements List&

2019-03-04 22:47:18 211

原创 HashMap中的迭代器实现与HashSet实现浅析

因为HashSet底层是使用HashMap实现的,或者说它只使用key,是一个删减版的HashMap,所以只简单讲一下它的实现。先看一下的主要数据成员(可以很清晰的看到它使用一个final修饰的Object对象作为value,这个值是不会变的,所以不能往里面存其他的value):private transient HashMap<E,Object> map; private ...

2019-03-04 12:25:42 781

原创 java 泛型无界通配符

首先说下泛型的好处:1.类型安全,在编译期就能发现类型转换错误,减少代码错误,提高可读性。举个很简单的例子,拿ArrayList来说,底层使用Object[]保存数据,所以它可以保存任何类型的数据,当取ArrayList中的数据时,集合中数据都是一样的,被Object类型引用着,所以这个元素只能调用覆盖Object的方法或者Object的方法,这往往是不够,就像你有自己的特有东西不能用,这...

2019-03-03 23:18:31 1440

原创 HashMap部分源码解析

首先说下hashmap的优点:根据key找到元素位置取出元素,若不考虑冲突,可实现随机取值(时间复杂度为1),底层数据结构为数组,为解决hash冲突,使用拉链法,所以数组中存的是链表的首节点,冲突后构成一条单链表;为了提高查询速率,当链表节点个数符合特定条件,会把链表转化成红黑树。对比ArrayList和LinkedLi,它们都需要去遍历集合中元素,因为不知道这个值是否存在以及存在哪个位置。...

2019-03-01 21:24:11 223

原创 LinkedList浅析

LinkedList主要数据成员:size :链表大小 ;first: 持有第一个节点引用;last持有链表最后一个节点引用,存储结构为Node,根据Node可以知道这是一个双向链表,可以双向遍历链表。LinkedList:和ArrayList一样,线程不安全。它也提供了下标访问和设置链表的方法,它不像ArrayList一样(ArrayList存储结构为一个object[]),Array...

2019-02-26 16:08:22 161

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除