首页 > 代码库 > 集合系列日记(17.5.20)

集合系列日记(17.5.20)

补充上一篇当中HashMap中的对外接口

1.clear():清空HashMap,它将所有的元素设为null(无效值)来实现

public void clear(){
    modCount++;
    Entry[] tab=table;
    for(int i=0;i<tab.length;i++)
        tab[i]=null;
    size=0;
}

2.containsKey():containsKey()的作用是判断HashMap是否包含key

3.containsValue():判断HashMap是否包含“值为value”的元素

public boolean containsValue(Object value){
    if(value=http://www.mamicode.com/=null)
        return containsNullValue();
    
    Entry[] tab=table;
    for(int i=0;i<tab.length;i++)
        for(Entry e=tab[i];e!=null;e=e.next)
            if(value.equals(e.value))
                return true;
    return false;
}

4.entrySet()、values()、keySet()

public Set<Map.Entry<K,V>> entrySet(){
    return entrySet0();
}
private Set<Map.Entry<K,V>> entrySet0(){
    Set<Map.Entry<K,V>> es=entrySet;
    return es !=null ?es:(entrySet=new EntrySet());
}
private final class EntrySet extends AbstractSet<Map.Entry<K,V>>{
    public Iterator<Map.Entry<K,V>> iterator(){
        return newEntryIteator();
    }
    public boolean contains(Object o){
        if(!(o instanceof MapEntry))
            return false;
        Map.Entry<K,V> e=(Map.Entry<K,V>) o;
        Entry<K,V> candidate=getEntry(e.getKey());
        return candidate !=null && candidate.equals(e);
    }
    public boolean remove(Object o){
        return removeMaping(o)!=null;
    }
    public int size(){
        return size;
    }
    public void clear(){
        HashMap.this.clear();
    }
}

待补充

 

集合系列日记(17.5.20)