Java设计哈希映射的方法

 更新时间:2025年05月15日 14:40:54   作者:真真最可爱  
这篇文章主要介绍了Java设计哈希映射的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

设计哈希映射

class MyHashMap {
    class Node{
        int key;
        int value;
        Node next;
        public Node(int key, int value){
            this.key= key;
            this.value=value;
        }
    }
    private Node [] buckets;
    int size;
    public MyHashMap() {
        size=0;
        buckets =new Node[16];
    }
    public void put(int key, int value) {
        //用key直接代表hashcode(),%bucket.length能保证不会溢出
        int index = key %buckets.length;
        Node head =buckets[index];
        //只要头节点不为空,就一种找下去
        while(head != null && head.key != key){
            head =head.next;
        }
        //找到相同key
        if(head != null ){
            head.value=value;
        //不存在这个key,用的是头插法
        }else{
            Node newnode =new Node(key,value);
            newnode.next=buckets[index];
            buckets[index] =newnode;
            size++;
        }
    }
    public int get(int key) {
        int index= key % buckets.length;
        Node head =buckets[index];
        while(head != null && head.key != key){
            head=head.next;
        }
        return  head == null ? -1 : head.value;
    }
    public void remove(int key) {
        int index= key % buckets.length;
        Node head =buckets[index];      
        //创建两个临时变量,如果只有一个临时变量,则最后不能给bucket[index]进行赋值
        Node dummy= new Node(0,0);
        Node cur=dummy;
        dummy.next=head;
        while(cur.next != null && cur.next.key != key){
            cur=cur.next;
        }     
        if(cur.next!=null && cur.next.key == key){
            cur.next=cur.next.next;
            size--;
        }   
        buckets[index] =dummy.next;
    }
}
/**
 * Your MyHashMap object will be instantiated and called as such:
 * MyHashMap obj = new MyHashMap();
 * obj.put(key,value);
 * int param_2 = obj.get(key);
 * obj.remove(key);
 */

到此这篇关于Java设计哈希映射的方法的文章就介绍到这了,更多相关java哈希映射内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java在重载中使用Object的问题

    Java在重载中使用Object的问题

    这篇文章主要介绍了Java在重载中使用Object的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • java设计模式--原型模式详解

    java设计模式--原型模式详解

    这篇文章主要为大家详细介绍了Java设计模式之Prototype原型模式的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • 详解java中面向对象设计模式类与类的关系

    详解java中面向对象设计模式类与类的关系

    这篇文章主要介绍了java面向对象设计模式中类与类之间的关系,下面小编和大家一起来学习一下吧
    2019-05-05
  • MyBatis中映射文件的使用案例代码

    MyBatis中映射文件的使用案例代码

    这篇文章主要介绍了MyBatis中映射文件的使用,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • 全面解析Java中的HashMap类

    全面解析Java中的HashMap类

    HashMap类为Java提供了键值对应的map类型,本文将从源码角度全面解析Java中的HashMap类,同时包括其各种常用操作方法等,欢迎参考与借鉴
    2016-05-05
  • 关于gradle多模块项目依赖管理方式

    关于gradle多模块项目依赖管理方式

    这篇文章主要介绍了关于gradle多模块项目依赖管理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • JAVA基础 语句标签的合法使用,以及{}语句块到底有什么用?

    JAVA基础 语句标签的合法使用,以及{}语句块到底有什么用?

    以前的一个思维误区,for(){},if(){}之类的用法中,逻辑if()和语句块{}应该是相互独立的两种语法
    2012-08-08
  • Java使用Apache POI操作Excel详解

    Java使用Apache POI操作Excel详解

    在Java中操作Excel是日常工作中经常遇到的问题,而Apache Poi是一种流行且广泛使用的方式,它提供了各种库和工具,所以本文就来详细如何使用Apache Poi来进行Excel文件操作吧
    2023-06-06
  • Java之String类型的有序Id批量生成器详解

    Java之String类型的有序Id批量生成器详解

    这篇文章主要介绍了Java之String类型的有序Id批量生成器,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • SpringCloud gateway+zookeeper实现网关路由的详细搭建

    SpringCloud gateway+zookeeper实现网关路由的详细搭建

    这篇文章主要介绍了SpringCloud gateway+zookeeper实现网关路由,本文通过图文实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08

最新评论