
java集合框架Collection - 积累总结
文章平均质量分 77
个人java集合框架Collection - 积累总结
wa_c777
知行合一
展开
-
TreeMap详解
本质上:红黑树实现的,所以以此重点掌握红黑树即可;TreeMap与HashMap的比较(各自的优缺点、适用范围):HashMap存储方面的优势:我们知道HashMap,它保证了以O(1)的时间复杂度进行增、删、改、查,从存储角度考虑,这两种数据结构是非常优秀的;HashMap统计方面不是很好:但是HashMap还是有自己的局限性----它不具备统计性能,或者说它的统计性能时间复杂度并不是很好才更准确,所有的统计必须遍历所有Entry,因此时间复杂度为O(N);比如Map的Key.原创 2021-02-13 15:42:14 · 7895 阅读 · 0 评论 -
TreeSet详解
TreeSet继承结构:public class TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>, Cloneable, java.io.SerializableTreeSet继承于AbstractSet 该类提供了Set 接口的骨架实现,以最大限度地减少实现此接口所需的工作量;TreeSet实现了NavigableSet接口,意味着它支持一系列的导航方法。比如查找与指定目.原创 2021-02-13 15:09:31 · 1361 阅读 · 0 评论 -
HashSet详解
HashSet继承结构:public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.SerializableHashSet 继承于AbstractSet 该类提供了Set 接口的骨架实现,以最大限度地减少实现此接口所需的工作量。实现Set接口,标志着内部元素是无序的,元素是不可以重复的。实现Cloneable接口,标识着可以它.原创 2021-02-13 13:59:16 · 1306 阅读 · 1 评论 -
LinkedList详解
前言:咦~之前做的笔记实在是找不到了,那就重新梳理一下吧~关于LinkedList的基本内容(get、add、remove)以及与ArrayList的对比,在:ArrayList、LinkedList比较,ArrayList详解 - 总结这里对LinkedList做进一步的补充;LinkedList 继承结构:LinkedList 继承自 AbstractSequentialList 接口,同时了还实现了 Deque, Queue 接口。LinkedList 双向链..原创 2021-02-13 11:19:52 · 1313 阅读 · 0 评论 -
Hashtable、HashMap、concurrentHashMap、LinkedHashMap、TreeMap
一、HashtableHashtable继承自Dictionary类,Dictionary类是一个已经被废弃的类(见其源码中的注释)。父类都被废弃,自然而然也没人用它的子类Hashtable了。Hashtable 的 API 都是 sychronized 的,实现线程安全的方式是在修改数据时锁住整个 Hashtable,效率低。因此是线程安全的,可以直接用在多线程环境中;由于 Hashtable 中的所有数据都加了锁,因此性能最差;底层采用:数组+链表实现。初始 size 为11,扩容:.原创 2020-11-05 11:29:19 · 253 阅读 · 0 评论 -
B+树的定义、插入、删除
一、B+树的定义各种资料上B+树的定义各有不同,一种定义方式是关键字个数和孩子结点个数相同。这里我们采取维基百科上所定义的方式,即关键字个数比孩子结点个数小1,这种方式是和B树基本等价的。上图就是一颗阶数为4的B+树。除此之外B+树还有以下的要求: 1)B+树包含2种类型的结点:内部结点(也称索引结点)和叶子结点。根结点本身即可以是内部结点,也可以是叶子结点。根结点的关键字个数最少可以只有1个。 2)B+树与B树最大的不同是:B+树内部结点不保存数据,只用于索引,所有数据(或者说记录...原创 2020-11-04 14:56:40 · 337 阅读 · 1 评论 -
B树
首先,注意名称,B树,英文是B-Tree,有的直接翻译成B-树,注意,并不是"B减树(所谓的另一种数据结构)"!没有这一说!总之B树、B-Tree、B-Tree都是相同的意思。一、B树的定义:(m阶:结点拥有的最大子结点数称为B树的阶)结点规定:1)每个节点最多有m个子节点;2)每个非叶子结点(除了根)具有至少⌈ m/2⌉子结点。 如果根不是叶结点,则根至少有两个子结点。关键字规定:3)每个结点最多有m-1个关键字。 非根结点至少有⌈m/2⌉-1个关键字。 根结点最少可以只有...原创 2020-11-04 13:46:48 · 405 阅读 · 0 评论 -
红黑树 - 删除
首先,再提一遍红黑树的性质: 节点是红色或黑色; 根是黑色; 所有叶子都是黑色(叶子是NIL节点); 每个红色节点的父子节点都不能为红色; 从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点;红黑树中删除一个节点,遇到的各种情形就是其子节点的状态和颜色的组合,子节点状态共有3种:无子节点、有一个子节点、有两个子节点,颜色有红色和黑色两种,所以共会有6种组合;(注意,本文子节点和叶节点区分,不是同一个)组合1:被删节点无子节点,且被删结点为红...原创 2020-11-04 10:32:30 · 586 阅读 · 0 评论 -
红黑树 - 插入
嗯。。。总是忘。。。再查以前做的笔记也好麻烦。。。于是将以前做的笔记重新整理、再整合其他优质内容,存到博客上吧,方便以后看。。。红黑树是许多"平衡"搜索树的一种,可以保证在最坏情况下基本动态操作集合的时间复杂度为O(lgn);1、红黑树的性质以上节选自《算法导论<第三版>》;首先可以看到,红黑树是一颗二叉搜索树,那就简单一提二叉搜索树,BST的特性:某节点的左子树节点值仅包含小于该节点值;某节点的右子树节点值仅包含大于该节点值;...原创 2020-11-04 09:10:01 · 815 阅读 · 1 评论 -
ArrayList、LinkedList比较,ArrayList详解 - 总结
一、效率对比1、读取操作 ArrayList LinkedList get(int index) 根据下标直接查询get(int index) O(1) 遍历获取 O(n) 2、插入操作 ArrayList LinkedList add(E e) 尾插 都是直接尾部插入 O(1) O(1) add(E e, int index) ...原创 2020-11-03 15:09:21 · 274 阅读 · 0 评论