WeakHashMap<K, V> — 약한 키를 가진 해시 맵
WeakHashMap<K, V> — 약한 키를 가진 해시 맵
약한 키(weak keys) 를 가진 Map 인터페이스의 해시 테이블 기반 구현이에요. WeakHashMap의 엔트리는 키가 더 이상 일반적인 사용에서 참조되지 않을 때 자동으로 제거돼요.
본문
public class WeakHashMap<K, V> extends AbstractMap<K, V> implements Map<K, V>
정확히 말하면, 주어진 키에 대한 매핑의 존재가 키가 가비지 컬렉터에 의해 폐기(파이널라이즈 가능해지고, 파이널라이즈된 후 회수)되는 것을 막지 않아요. 키가 폐기되면 그 엔트리는 사실상 맵에서 제거되므로, 이 클래스는 다른 Map 구현과 다소 다르게 동작해요.
null 값과 null 키를 모두 지원해요. 성능 특성은 HashMap과 유사하며, initial capacity와 load factor를 받아요.
대부분의 컬렉션 클래스처럼 이 클래스는 동기화되지 않아요. 동기화된 WeakHashMap은 Collections.synchronizedMap으로 만들 수 있어요.
이 클래스는 주로 == 연산자로 객체 동일성을 검사하는 equals 메서드를 가진 키 객체와 함께 사용하기 위한 것이에요. 키 객체의 equals가 객체 동일성에 기반하지 않는 String 같은 재생성 가능한 키와도 잘 동작하지만, 키가 폐기될 때 엔트리가 자동 제거되는 동작이 혼란스러울 수 있어요.
WeakHashMap의 값은 약하게 참조되지 않으므로 키를 참조해서는 안 돼요. 그렇게 하면 키가 회수되는 것을 막을 수 있어요.
주요 생성자
WeakHashMap()— 기본 초기 용량(16)과 기본 부하율(0.75)로 새 빈WeakHashMap을 생성해요.WeakHashMap(int initialCapacity)— 지정된 초기 용량과 기본 부하율로 생성해요.WeakHashMap(int initialCapacity, float loadFactor)— 지정된 초기 용량과 부하율로 생성해요.WeakHashMap(Map<? extends K, ? extends V> m)— 지정된 맵과 같은 매핑으로 생성해요.