当前位置 : 主页 > 编程语言 > c++ >

实现Map集合的一个类

来源:互联网 收集:自由互联 发布时间:2021-06-30
gistfile1.txt class SimplEntry implements Map.Entry ,java.io.Serializable { private final K key; private V value; //定义两个构造器 public SimplEntry(K key,V value) { this.key=key; this.value=value; } public SimplEntry(Map.Entry entry
gistfile1.txt
class SimplEntry
 
   implements Map.Entry
  
   ,java.io.Serializable { private final K key; private V value; //定义两个构造器 public SimplEntry(K key,V value) { this.key=key; this.value=value; } public SimplEntry(Map.Entry
    entry) { this.key=entry.getKey(); this.value=entry.getValue(); } @Override public K getKey() { return key; } @Override public V getValue() { return value; } @Override public V setValue(V value) { V oldValue=this.value; this.value=value; return oldValue; } //根据key比较两个对象是否相等 public boolean equals(Object o) { if(o==this) { return true; } if(o.getClass()==SimplEntry.class) { SimplEntry se=(SimplEntry)o; return se.getKey().equals(getKey()); } return false; } //根据key计算hashcode public int hashcode() { return key==null ? 0:key.hashCode(); } public String toString() { return key+"="+value; } //继承HashSet实现一个Map public class Set2Map
   
     extends HashSet
    
     > { //实现清空所有key-value的方法 public void clear() { super.clear(); } //判断是否包含某个key public boolean containsKey(K key) { return super.contains(new SimplEntry
     
      (key,null)); } //判断是否包含某个value public boolean containsValue(Object value) { for(SimplEntry se:this) { if(se.getValue().equals(value)) { return true; } } return false; } //根据指定的key取出对应的value public V get(Object key) { for(SimplEntry se:this) { if(se.getKey().equals(key)) { return (V) se.getValue(); } } return null; } //将key-value放入集合中 public V put(K key,V value) { add(new SimplEntry
      
       (key,value)); return value; } //将另外一个key-value对放入该Map中 public void putAll(Map
        m) { for(K key:m.keySet()) { add(new SimplEntry
       
        (key,m.get(key))); } } //根据指定key删除key-value对 public V removeEntry(Object key) { for(Iterator
        
         > it=this.iterator();it.hasNext();) { SimplEntry
         
           en=(SimplEntry
          
           )it.next(); if(en.getKey().equals(key)) { V v=en.getValue(); it.remove(); return v; } } return null; } public int size() { return super.size(); } } }
          
         
        
       
      
     
    
   
  
 
网友评论