JDK源码阅读
云聪
喜欢简洁的抽象,也着迷神奇的细节,我担心自己因为过于偏向抽象而变得肤浅,也害怕自己因为太过深入细节而迷失,这让我很痛苦,但是我不会放弃挣扎,因为我相信挣扎的过程就是成长。
展开
-
Java8 Iterator接口源码阅读
/** * 一个在collection上的iterator。Iterator在Java集合框架中取代Enumeration。 * Iterator在两个方面和enumeration不同: * 1. Iterator允许在迭代的过程总从collection中移除元素。 * 2. 方法命改善了 * *这个接口是Java集合框架的成员 */public interface Iterato原创 2015-04-19 19:16:20 · 848 阅读 · 0 评论 -
队列在Java类库中的链式表示及实现——LinkedList
队列是一种先进先出的数据结构。它主要包含两种操作:(1)入队, 向队尾添加一个元素;(2)出队,从队首删除一个元素。原创 2015-05-20 11:18:15 · 1045 阅读 · 0 评论 -
线性表在Java类库中链式表示及的实现——LinkedList
队列在Java类库中的实现——LinkedList一文中已经提到LinkedList是一个双向链表,它用一个整数来存储链表的长度:transient int size = 0;用一个静态内部类来表示链表的节点: private static class Node { E item; Node next; Node prev;原创 2015-05-22 20:59:58 · 1096 阅读 · 0 评论 -
线性表在Java类库中的顺序表示及实现——ArrayList
ArrayList用数组实现了线性表。它用数组存储线性表的元素:transient Object[] elementData;它也存储了线性表中元素的个数:private int size;接下来讲讲线性表的常见操作在ArrayList中的实现。(1)查询线性表中是否包含某一个元素 public boolean contains(Object o) {原创 2015-05-23 20:15:30 · 1183 阅读 · 1 评论 -
哈希表在Java类库中的实现——HashMap
HashMap存储的是键值对,在HashMap内部用一个Entry表示键值对:static class Entry implements Map.Entry { final K key; V value; // 该键值对的下一个键值对的指针 Entry next; int hash; /**原创 2015-05-26 22:56:53 · 1486 阅读 · 1 评论 -
哈希表在Java类库中的实现——HashSet
HashSet是基于哈希表在Java类库中的实现——HashMap来实现的,与HashMap不同的是,它保存的是单个元素,而不是键值对。在HashSet里,用HashMap来存储元素:private transient HashMap map;从这个map的类型看出,它把HashSet的元素存储为HashMap的键。因为键值对的value位置空着,所以用一个值来占据键值对的value的位置原创 2015-05-28 11:34:18 · 951 阅读 · 0 评论 -
Java8 Collection接口源码阅读(二)
接口中全是方法声明,故本文基本上只是对源码里的注释进行了翻译,除了对默认方法的几句解释外。// 继承Iterable接口public interface Collection extends Iterable { // 查询操作 /** * 返回collection中元素的数目。如果元素数目大于Integer.MAX_VALUE, * 就返回In原创 2015-04-14 21:00:26 · 866 阅读 · 0 评论 -
Java8 Collection接口源码阅读(一)
Collection接口是collection层次结构的根接口。一个collection表示一组对象,每个对象都是collection的元素。一些collection允许重复的元素,而另一些不允许。一些collection中的元素是有序的,而另一些collection中的元素是无序的。JDK不提供这个接口的直接实现,只是提供更具体的字类的实现,像Set和List。这个接口用来传递collectio原创 2015-04-13 14:01:56 · 1089 阅读 · 0 评论 -
Java8 Iterable接口源码阅读
/** * 实现这个接口允许对象成为for-each循环语句的目标 */public interface Iterable { /** * 返回T类型的元素上的一个迭代器 */ Iterator iterator(); /** * 对这个Iterable的每一个元素执行给定的动作指导所有元素都被处理或者动作抛出一个异常 * 为原创 2015-04-19 18:49:38 · 1467 阅读 · 0 评论 -
Java Object类源码阅读
/** * Object类是类层次结构的根类。Object类是每一个类的超类。所有对象,包括数组, * 都实现了这个类的方法。 */public class Object1 { Object private static native void registerNatives(); static { registerNatives(); }原创 2015-04-23 14:32:30 · 1017 阅读 · 0 评论 -
Java8 Consumer接口源码阅读
/** * 代表一个操作,这个操作接受单一输入参数并且不返回任何结果。不像其它大多数函数接口,Consumer被 * 期望通过副作用操作。(通过副作用操作时什么意思?) * *这是一个函数接口,它函数方法是accept(Object)。 */@FunctionalInterfacepublic interface Consumer { /** * 对给定参数执行这原创 2015-04-19 19:33:29 · 3968 阅读 · 0 评论 -
栈在Java类库中的顺序表示及实现——Stack
栈是一种后进先出的数据结构。在它之上,主要有三种操作:(1)判断栈是否为空——empty();(2)在栈顶添加一个元素——push(E);(3)删除并返回栈顶元素——pop()。在Java类库中,Stack类实现了栈,它继承自Vector类:public class Stack extends Vector于是,Stack用数组保存元素:protected Object[]原创 2015-05-20 10:25:21 · 1883 阅读 · 0 评论