数据结构

  • 1. 理解HashMap

    • 漫画:什么是HashMap?
    • 漫画:高并发下的HashMap
    • 漫画:什么是ConcurrentHashMap?
    • Java8系列之重新认识HashMap
    • Java HashMap工作原理及实现
    • HashMap 相关面试题及其解答
    • Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析

    2. HashMap实现解析

    2.1. put函数的实现

    put函数大致的思路为:

    1. 对key的hashCode()做hash,然后再计算index;
    2. 如果没碰撞直接放到bucket里(table的索引在逻辑上叫做“桶”(bucket),它存储链表的第一个
  • B-树

    B-树定义

    B-树是一种多路平衡查找树(假设有m阶或m路、m叉)

    1. 每个节点最多有m个孩子;
    2. 根节点至少有两个孩子(除非B-数只包含一个节点),除根节点和叶子节点外,每个节点至少有ceil(m/2)个孩子;
    3. 除叶子节点外,每个节点关键字数量比孩子数少1;
    4. 所有叶子节点均在同一层;
    5. 每个节点中的关键字按非降序排列,每个节点的关键字对其子树的范围分割。

    B-树理解

    • B树与B+树
  • 前言

    非科班,之前对数据结构不了解。但现在觉得这方面的知识很重要,属于程序员的内功需要修炼。

    栈是一种线性存储结构且运算受限的线性表,它的插入和删除运算操作被限制在表的一端,该端称为栈顶,而另外一端则称为栈底。

    栈中的数据以后进先出(Last In First Out 即LIFO)方式进出栈。

    用JS中的数组方法来实现栈

        function Stack(){
            this.items = [];
        }
    
        Stack.prototype = {
            constructor:Stack,
            // 将新增的数据放入栈顶
            p
  • 前言

    非科班,之前对数据结构不了解。但现在觉得这方面的知识很重要,属于程序员的内功需要修炼。

    栈是一种线性存储结构且运算受限的线性表,它的插入和删除运算操作被限制在表的一端,该端称为栈顶,而另外一端则称为栈底。

    栈中的数据以后进先出(Last In First Out 即LIFO)方式进出栈。

    用JS中的数组方法来实现栈

        function Stack(){
            this.items = [];
        }
    
        Stack.prototype = {
            constructor:Stack,
            // 将新增的数据放入栈顶
            p