JDK源码
JDK源码阅读笔记
w011m
这个作者很懒,什么都没留下…
展开
-
JDK源码阅读(10):String
String version:1.8 public final class String implements java.io.Serializable, Comparable<String>, CharSequence { private final char value[]; …… } String:本质为不可变的字符数组,该类为final类,不可被继承。 public String(String original) { this.value = original原创 2020-07-23 11:31:44 · 92 阅读 · 0 评论 -
JDK源码阅读(9):元注解
元注解 @Target @Retention @Documented @Inherited 为Java的元注解,用于注解注解的基本信息 @Target 注解的目标: @Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.ANNOTATION_TYPE) public @interface Target { /** * Returns an array of the kinds of elements an a原创 2020-07-18 10:44:29 · 122 阅读 · 0 评论 -
JDK源码阅读(8):PriorityQueue
PriorityQueue version:1.8 今天看一种特殊的队列“优先级队列” 优先级队列名为队列,但不满足一般队列先进先出的特性,而是优先级最高(或最低)的先出,其底层使用堆实现。 堆是一种特殊的二叉树,其不同于二叉搜索树,是不完全有序的,其从根节点到叶子节点形成的每条路径都是有序的,但各条路径之间是不要求有序的,如此保证了根节点是全局的最大(或最小)的节点。同时,堆是完全二叉树。 根据根节点是最大还是最小,可称为大根堆或小根堆。 public class PriorityQueue<E&g原创 2020-06-09 16:00:06 · 93 阅读 · 0 评论 -
JDK源码阅读(7):Object
Object version:1.8 java.lang.Object是Java所有类的父类,可以说是JDK源码的“根” package java.lang; public class Object { ………… } 先看看其全貌: finalize 每个对象在构造时可能需要做些准备工作,这就是每个类的构造方法,同样的,在析构前可能要做些善后工作,对应的方法就是finalize protected void finalize() throws Throwable { } Object类的该方法是空原创 2020-06-08 19:32:57 · 114 阅读 · 0 评论 -
JDK源码阅读(6):Comparable 与 Comparator
Comparable 与 Comparator version:1.8 在上一篇中我们看到TreeMap在进行值的比较的时候考虑了两种方式:Comparable 与 Comparator,在这里对其进行下比较。 Comparable package java.lang; public interface Comparable<T> { public int compareTo(T o); } Comparable是位于java.lang包下的一个接口,内部只有一个方法public int原创 2020-06-06 11:18:21 · 105 阅读 · 0 评论 -
JDK源码阅读(5):TreeMap
TreeMap version:1.8 TreeMap基于红黑树实现对存储的键值对的快速查询,其在多线程下使用不安全。 红黑树是一种平衡二叉搜索树。 二叉搜索树是一种特殊的二叉树,其每个节点的值大于其左子节点的值,大于其右子节点的值(当然也可能反过来),从而可以类似二分查找快速查找到想要的值。 若二叉搜索树节点的左子树与右子树的节点数目相差过大,会影响查找效率,极端情况下每个节点只有右子节点,这个时候二叉树已经退化为链表。 平衡二叉搜索树通过设置一些限制尽量保证每个节点的左子树与右子树的节点数目相差尽量小,原创 2020-06-05 20:01:33 · 139 阅读 · 0 评论 -
JDK源码阅读(4):HashSet与Hashtable
HashSet HashSet用于存储无序不重复的元素。 public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable 由于HashMap的key满足这一特性,故其底层使用HashMap实现。 private transient HashMap<E,Object> map; public HashSet()原创 2020-06-03 10:49:50 · 118 阅读 · 0 评论 -
JDK源码阅读(3):HashMap
HashMap version:1.8 已读 get put resize remove HashMap基于哈希算法实现对存储的键值对的快速查询,其在多线程下使用不安全。 本文红黑树相关的内容不多做介绍。 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable 每一条键值对使用一个Node结点存储,使用Node数组存储所有的键原创 2020-05-26 19:29:06 · 95 阅读 · 0 评论 -
JDK源码阅读(2):Queue
Queue version:1.8 不同于Stack类提供的栈的具体实现,Queue为JDK提供的队列(先进先出)的接口。 /** * @see java.util.Collection * @see LinkedList * @see PriorityQueue * @see java.util.concurrent.LinkedBlockingQueue * @see java.util.concurrent.BlockingQueue * @see java.util.concurrent原创 2020-05-25 16:32:54 · 78 阅读 · 0 评论 -
JDK源码阅读(1):Stack
Stack Stack为JDK对于栈(先进后出)这一数据结构的实现,其继承Vector类,其操作主要是对Vector类的一些封装。 public class Stack<E> extends Vector<E> 栈主要有三个操作: push:入栈 pop:出栈 peek:查看栈顶元素 push源码如下: public E push(E item) { addElement(item); return item; } addElement(E obj)为继承自Vec原创 2020-05-22 18:12:46 · 104 阅读 · 0 评论