HashSet 과 HashMap 의 관계

1546 단어 자바
public class HashSet  
    extends AbstractSet  
    implements Set, Cloneable, java.io.Serializable  
{  
    static final long serialVersionUID = -5024744406713321676L;  
  
    private transient HashMap map;  
  
    // Dummy value to associate with an Object in the backing Map  
    private static final Object PRESENT = new Object();  
  
    /** 
     * Constructs a new, empty set; the backing HashMap instance has 
     * default initial capacity (16) and load factor (0.75). 
     */  
    public HashSet() {  
    map = new HashMap();  
    }  
.........  
    /** 
     * Returns an iterator over the elements in this set.  The elements 
     * are returned in no particular order. 
     * 
     * @return an Iterator over the elements in this set 
     * @see ConcurrentModificationException 
     */  
    public Iterator iterator() {  
    return map.keySet().iterator();  
    }  

나 도 이런 면접 관 을 만난 적 이 있 는 것 같다. 이 두 사람의 관 계 를 물 어 보 니 HashSet 이 HashMap 을 사용 하 는 것 이 었 구나. value 만 생략 하고 key 만 사용 했다.
그러면 hashMap 과 hashtable 의 차 이 는 hashmap 는 스 레 드 가 안전 하지 않 고 속도 가 빠 릅 니 다.hashtable 은 스 레 드 가 안전 하고 속도 가 느 립 니 다.
hashMap 과 자바 5 의 병렬 라 이브 러 리 에 있 는 Concurrent HashMap 의 차 이 는 hashmap 가 스 레 드 가 안전 하지 않 은 것 인지, 후 자 는 스 레 드 가 안전 하고 속도 도 느 리 지 않 을 것 입 니 다. 16 배 올 랐 다 고 합 니 다.
concurrent HashMap 에 세그먼트 잠 금 개념 이 추가 되 었 습 니 다. 큰 맵 을 N 개의 hashtable 과 유사 한 hashtable 로 나 누 어 key. hascode () 에 따라 key 를 그 hashtable 에 두 기로 결정 한 것 으로 이해 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기