W-M'S blog

Thinking will not overcome fear but action will.

Java泛型內各种参数的异同

先说下本篇随笔主要涉及到的东西(参考Java编程思想一书): 说明 List< Fruit > 与 List< Apple > 之间为什么是非继承关系。 由 1 引出的问题说明 List<? extends Fruit> 存在的必要性。 List<? super Fruit> 与 List<? extends Fruit&...

Java集合类学习之TreeMap

本篇随笔主要记录了我阅读TreeMap(JDK1.8)源码期间的对于TreeMap的一些实现上的个人理解,用于个人备忘,有不对的地方,请指出。 前言 TreeMap将其内部所有节点组织成了一颗红黑树,从而使得检索、插入、删除操作平均和最差时间都是O(lgn)。如果程序中对存储的数据集合的操作经常需要得到一些有序的结果,比如查找大于指定元素的所有节点,那么应该使用TreeMap。理...

Java集合类学习之HashSet及LinkedHashSet

本篇随笔主要记录了我阅读HashSet及LinkedHashSet(JDK1.8)源码期间的个人理解,用于个人备忘,有不对的地方,请指出。 HashSet实现 HashSet底层是依赖于HashMap来实现的,在之前的文章中我分析过了HashMap的源码,这里理解HashSet底层实现就非常容易了。 其内部成员变量和构造方法如下所述: private transient Has...

Java集合类学习之LinkedHashMap

本篇随笔主要记录了我阅读LinkedHashMap(JDK1.8)源码期间的对于LinkedHashMap的一些实现上的个人理解,用于个人备忘,有不对的地方,请指出。 前言 LinkedHashMap相比于HashMap,主要就是增加了控制节点访问顺序的特性,我们可以指定按照插入顺序遍历LinkedHashMap,也可以指定按照LRU方式遍历LinkedHashMap。使用Lin...

Java集合类学习之HashMap

本篇随笔主要记录了我阅读HashMap(JDK1.8)源码期间的对于HashMap的一些实现上的个人理解,用于个人备忘,有不对的地方,请指出。 前言 接下来会从以下几个方面介绍 HashMap 源码相关知识: HashMap 存储结构 HashMap 各常量、成员变量作用 HashMap 几种构造方法 HashMap put 及其相关方法 HashMap g...

数据结构之红黑树

本篇随笔主要记录了我学习红黑树的过程,用于个人备忘,有不对的地方,请指出。 红黑树简介 红黑树主要是对内存中比较小规模的数据进行索引,内存中索引比较常用的数据结构是BST,外存中是B树及B+树。 内存中索引比较常用的数据结构是BST,其存在的问题是树可能非常不平衡。红黑树就是为了平衡BST而存在的数据结构,其通过规定的颜色限制达到红黑树的平衡,这个平衡并没有达到AVL树中的严...

数据结构之二叉搜索树

本篇随笔主要介绍 Java 实现二叉搜索树的查找、插入、删除、遍历等内容。有不对的地方,请指出。 二叉搜索树简介 二叉搜索树需满足以下四个条件: 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 任意节点的左、右子树也分别为二叉查找树; 没有键值相等的节点。 二叉搜索树...