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

数据结构之 哈希表 栈 队列

作者: _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();
        }
    }
    
    

    相关文章

      网友评论

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

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