设计有setAll功能的哈希表 ╰半橙微兮° 2022-05-28 10:38 111阅读 0赞 ![20180403170529535][] import java.util.*; //设计有setAll功能的哈希表 public class GetSetAllHash{ //内部类实现map的存储 public static class MyValue<V> { private V value; //存储的值 private long time; //存储的时间 public MyValue(V value,long time) { this.value=value; this.time=time; } //获得所需要的值 public V getValue() { return this.value; } //获得时间 public long getTime() { return this.time; } } //真正实现的MyhashMap public static class MyHashMap<K,V>{ private HashMap<K,MyValue<V>> basehash; private long time; private MyValue<V> setAll; //初始化对象 public MyHashMap() { this.basehash=new HashMap<K,MyValue<V>>(); this.time=0; this.setAll=new MyValue<V>(null,-1); } //(1)函数1 判断是否包含一个值 public boolean containsKey(K key) { return this.basehash.containsKey(key); } //(2)函数2 设置值 public void put(K key,V value) { this.basehash.put(key,new MyValue<V>(value,this.time++)); } //(3)函数3 setAll 函数 public void setAll(V value) { this.setAll=new MyValue<V>(value,this.time++); } //(4) 函数4 get函数 public V get(K key) { if(this.containsKey(key)) { //通过时间序列,查看是否被更改过 if(this.basehash.get(key).getTime()>this.setAll.getTime()) { return this.basehash.get(key).getValue(); }else{ return this.setAll.getValue(); } }else{ return null; } } } public static void main(String[]args) { MyHashMap<String, Integer> test = new MyHashMap<String, Integer>(); test.put("Tom", 1); test.put("James", 2); System.out.println(test.containsKey("Tom")); System.out.println(test.get("Tom")); System.out.println(test.containsKey("Jame")); System.out.println(test.get("James")); test.setAll(3); test.put("Rose", 4); System.out.println(test.get("Tom")); System.out.println(test.get("James")); System.out.println(test.get("Rose")); test.setAll(5); System.out.println(test.get("Tom")); System.out.println(test.get("James")); System.out.println(test.get("Rose")); } } ![20180403170552722][] [20180403170529535]: /images/20220528/d715afeee9d246ffb0e2f59492ef3659.png [20180403170552722]: /images/20220528/e1bd517b9658432391a4765a16865c94.png
相关 哈希表 上一篇博客:[静态链表的介绍及实现][Link 1] > 写在前面:大家好!我是`AC-fun`,我的昵称来自两个单词`Accepted`和`fun`。我是一个热爱ACM的 ╰半夏微凉°/ 2022年10月30日 07:24/ 0 赞/ 189 阅读
相关 哈希表(哈希函数的设计与哈希冲突的解决) 文章目录 一、什么是哈希表 二、哈希函数 三、哈希冲突的原因与解决方法 1、数组扩容 2 电玩女神/ 2022年10月29日 07:47/ 0 赞/ 290 阅读
相关 哈希表 我们知道,通过对数组进行直接寻址(Direct Addressing),可以在 O(1) 时间内访问数组中的任意元素。所以,如果存储空间允许,可以提供一个数组,为每个可能的关键 快来打我*/ 2022年06月05日 02:20/ 0 赞/ 338 阅读
相关 设计有setAll功能的哈希表 ![20180403170529535][] import java.util.; //设计有setAll功能的哈希表 public class Ge ╰半橙微兮°/ 2022年05月28日 10:38/ 0 赞/ 112 阅读
相关 哈希表 1. 什么是哈希表 我们先来做个题(leetCode上387题) ![70][] public class Solution_387 { 朱雀/ 2022年05月16日 10:11/ 0 赞/ 277 阅读
相关 哈希表 哈希表是种数据结构,它可以提供快速的插入操作和查找操作。第一次接触哈希表时,它的优点多得让人难以置信。不论哈希表中有多少数据,插入和删除(有时包括侧除)只需要接近常量的时间即0 今天药忘吃喽~/ 2022年02月01日 14:36/ 0 赞/ 384 阅读
相关 【哈希表】 char FirstNotRepeatingChar(char pString) { // invalid input if(! r囧r小猫/ 2022年01月06日 11:33/ 0 赞/ 305 阅读
相关 哈希表 一、简介 如果所有的键都是小整数,那么我们可以用一个数组来实现无序的符号表,将键作为数组的索引i而数组中i(键)处储存的就是对应的值。 这样就可以快速地访问任意键的值, 旧城等待,/ 2021年12月22日 01:21/ 0 赞/ 380 阅读
相关 【搞定算法】哈希表增加 setAll 功能 > 博主秋招提前批已拿百度、字节跳动、拼多多、顺丰等公司的offer,可加微信:pcwl\_Java 一起交流秋招面试经验,可获得博主的秋招简历和复习笔记。 > `题目:哈 清疚/ 2021年11月23日 09:22/ 0 赞/ 158 阅读
相关 哈希表 【一】哈希表 > 他通过把关键码值映射到表中的一个位置来访问记录,以加快查找的速度。这个映射函数就是散列函数。 ![watermark_type_ZmFuZ3poZW5na 傷城~/ 2021年08月11日 17:13/ 0 赞/ 534 阅读
还没有评论,来说两句吧...