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"));
}
}
设计有setAll功能的哈希表
最新推荐文章于 2022-06-30 17:44:04 发布