我要啦免费统计

Blog Archives

jdk7源码剖析之标准库(2)—— 从AbstractList到AbstractCollection

由于在上篇文章中,我们已经详细的看过ArrayList的代码以及实现,所以在之后的分析中,对于类似的代码,我们只是给出重点方法的signature,除非在实现方面和ArrayList有很大的不同。

在ArrayList的实现中,除了它继承了AbstractList外还有一点值得在意的是它还实现了一个叫做List的接口。实际上如果我们再去看看其他的集合类,就会发现至少在Collection这一块,带有“Abstract”的类和相应的接口联系的非常紧密。下面我们看看对于ArrayList及其父类AbstractList与AbstractCollection之间的关系。

Deepin-jdk_1
Read more »

Post Footer automatically generated by wp-posturl plugin for wordpress.

jdk7源码剖析之标准库(1)—— 从Arraylist到AbstractList

一切从ArrrayList开始

话说在上大学之前,也算是稍微接触过一些数据结构,所以一开始看到Java里面的ArrayList就觉得奇怪。以前见过的数据结构无非是Array或者List,怎么又出来个ArrayList,这到底是Array还是List啊。后来上课时发现,这从来没听说过的ArrayList貌似还用的挺多。众所周知,List算是和Array是不分伯仲的两种数据结构。Array擅长随机存储(RandomAccess),但是对在任意位置添加删除元素却很不在行。而List则相反,因为其本身是一个链表,只需要对节点的指针进行操作就可以了。那么ArrayList又是怎么实现的呢,我们不妨先看一看这货的signature:


Read more »

Post Footer automatically generated by wp-posturl plugin for wordpress.

[SimplerExplained]为什么只给出前序以及后序遍历,不能生成唯一的二叉树

我们在学习二叉树的遍历时,都会不可避免的学到二叉树的三种遍历方式,分别是遵循(根-左-右)的前序遍历、遵循(左-根-右)的中序遍历以及遵循(左-右-根)的后序遍历。并且每一个二叉树都可以用这三种遍历方式并且分别转换为字符串序列,以便在计算机上面保存。但是我们在进行逆向操作的时候却会遇到困难:我们并不能从某一种遍历方式推断出唯一的二叉树,也就是说,这是个单向编码的过程。而当我们有一个二叉树的两种遍历方式的表述时,似乎也不能做到尽善尽美:前序遍历和中序遍历的组合或者中序遍历和后序遍历的组合可以逆向生成唯一的二叉树,但是偏偏前序遍历和后续遍历却不可以。这其中的原因是什么呢?

Read more »

Post Footer automatically generated by wp-posturl plugin for wordpress.

[译]在C中表示TMin

在给一同学解决C的一个问题时,偶然发现如果直接输出-2147483648会得到2147483648。一开始我以为是整数溢出,然而输出(int)-2147483648则会得到正确的结果-2147483648。int型数据类型的取值范围是-2^31 ~ 2^31-1,也就是说,int型可以表示-2147483648这个数。那么为什么第一个数会underflow呢?综合Stackoverflow上面热心网友的回答,以及同学提供的一份CSAPP的补充资料,终于解决了这个问题。下面我就把这份同学给出的详细的资料翻译出来,供大家参考。

原文下载:http://www.csapp.cs.cmu.edu/public/waside/waside-tmin.pdf

原作者:Randal E. Bryant and David R. O’Hallaron

Read more »

Post Footer automatically generated by wp-posturl plugin for wordpress.

为什么处理一个排序数组要比处理一个未排序的数组更快?

以前无意看到了stackoverflow上面的一个帖子

为什么这段代码在数据排序后的运行时间要比排序前快6倍?

Read more »

Post Footer automatically generated by wp-posturl plugin for wordpress.