设计有setAll功能的哈希表

本文介绍了一种Java实现的自定义哈希表,该哈希表具备setAll功能,可以为所有项设置一个统一的值,并且能够区分个别设置与整体设置之间的优先级。文章详细展示了自定义哈希表的数据结构、核心方法实现及其运行示例。

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"));
	  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值