美文网首页
数据结构之 哈希表 栈 队列

数据结构之 哈希表 栈 队列

作者: _William_Zhang | 来源:发表于2019-02-16 10:31 被阅读9次

哈希表

哈希表 支持 增删改查 四种操作。代码如下

package com.company;


import java.util.HashMap;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;


public class Main {

    public static void main(String[] args) {
        HashMap<String, String> gender = new HashMap<String, String>();   // 哈希表实现的一个Map , 声明一个哈希表

        // 每个人对应的性别

        // 增
        gender.put("alex", "male");
        gender.put("frank", "female");

        // 查
        if (gender.containsKey("alex")) {  //先判断存在不存在
            System.out.println(gender.get("alex"));  //存在则读取
        }

        String result = gender.get("alex");
        if (result != null) {
            System.out.println(result);
        }

        // 改 和增是一样的 ,只是同样的键值会覆盖
        gender.put("frank", "male");

        //删
        gender.remove("frank");
    }
}

哈希表的特性:
增加, 查询, 修改 和 删除操作的时间复杂度都近似于 O(1) , 也不依赖于插入的顺序. 也就是随机访问(想访问哪个数据就马上访问哪个数据!)存储在哈希表里的数据没有顺序!!! 不可以对哈希表进行排序

一个数据结构, 用于存储数据. 支持两种操作:
插入数据 (push);
取出数据 (pop); 获得数据, 同时把数据从栈中删除
所有操作的时间复杂度度为O(1)

最重要的是, 哈希表可以随机访问. 但是栈对数据的访问顺序有规定. 遵循一个规则: 先进后出, 后进先出. 也就是只能访问当最近放进到栈里面的那个数据!

代码如下:

package com.company;


import java.util.HashMap;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;


public class Main {

    public static void main(String[] args) {

        Stack<Integer> stack = new Stack<Integer>();

        stack.push(3);
        stack.push(5);
        System.out.println(stack.pop());  // 5
        System.out.println(stack.pop());  // 3

        // 深度优先搜索 本质上就是栈的使用

        // 只看顶部数据,但是不删除
        stack.peek();

        //检查是否为空
        stack.empty();
    }
}

队列

一个类似于栈的数据结构, 用于存储数据, 同样支持两种操作:
插入数据 (add);
取出数据 (poll); 获得数据, 同时从队列中删除
所有操作的时间复杂度为O(1)
队列遵循一个规则: 先进先出, 后进后出. 也就是从队列中取出数据的顺序和放进去的顺序是一样的!
遇到这种描述方式的时候, 尝试使用接口! 抽象数据类型

代码如下:

package com.company;


import java.util.HashMap;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;


public class Main {

    public static void main(String[] args) {
       
        //队列

        Queue<Integer> queue = new LinkedList<Integer>();  //因为 LinkedList类 实现了 Queue接口

        queue.add(3);
        queue.add(5);

        System.out.println(queue.poll());  // 3
        System.out.println(queue.poll());  // 5

        Integer first_of_queue = queue.peek();

        //检查是否为空
        queue.isEmpty();
    }
}

相关文章

  • Java基础-数据结构简单了解

    常用数据结构: 栈,队列,数据,链表,树,哈希表. 什么是数据结构: 数据的组织方式. 各个结构的数据特点: 栈:...

  • 8.数据结构

    数组链表队列栈哈希表哈希map树

  • 【恋上数据结构与算法一】(二)动态数组

    1、什么是数据结构? ◼ 数据结构是计算机存储、组织数据的方式 线性结构:线性表 (数组、链表、栈、队列、哈希表)...

  • Collection框架

    数据结构有: 数组、链表、栈、集合、队列、哈希表、树等 顶级抽象接口Collection 子接口分为List/...

  • 数据结构

    什么是数据结构?数据结构是计算机存储、组织数据的方式主要数据结构有:线性结构:线性表、数组、链表、栈、队列、哈希表...

  • 《恋上数据结果与算法》- 动态数组

    什么是数据结构 数据结构是计算机存储,组织数据的方式 线性结构 包括 线性表,数组,链表,栈,队列,哈希表 树形结...

  • 小灰算法之旅笔记

    数据结构 分类 线性结构 - 数组,链表,栈,队列,哈希表 树 图(graph) 多对多关联关系​ 衡量指标: 时...

  • 前端常见数据结构小结

    常见数据结构的 JavaScript 实现 栈 队列 链表 集合 字典 哈希表 二叉树 图 前端与数据结构 数据结...

  • 【数据结构与算法】 01 - 动态数组

    1. 什么是数据结构 ? 数据结构是计算机存储组织数据的方式。 1.1 线性结构 数组、链表、栈、队列、哈希表。 ...

  • 数据结构之 哈希表 栈 队列

    哈希表 哈希表 支持 增删改查 四种操作。代码如下 哈希表的特性:增加, 查询, 修改 和 删除操作的时间复杂度...

网友评论

      本文标题:数据结构之 哈希表 栈 队列

      本文链接:https://www.haomeiwen.com/subject/cdkbeqtx.html