Share via


WeakHashMap 클래스

정의

인터페이스의 Map 해시 테이블 기반 구현( <em>약한 키</em> 포함).

[Android.Runtime.Register("java/util/WeakHashMap", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public class WeakHashMap : Java.Util.AbstractMap, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/WeakHashMap", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })>]
type WeakHashMap = class
    inherit AbstractMap
    interface IMap
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
상속
WeakHashMap
특성
구현

설명

인터페이스의 Map 해시 테이블 기반 구현( <em>약한 키</em> 포함). 의 항목 WeakHashMap 은 키가 더 이상 일반 용도로 사용되지 않을 때 자동으로 제거됩니다. 보다 정확하게 말하면, 지정된 키에 대한 매핑이 있으면 가비지 수집기에서 키를 삭제하는 것을 방지하지 않습니다. 즉, 종료 가능하고, 완료된 다음, 회수됩니다. 키가 삭제되면 해당 항목이 맵에서 효과적으로 제거되므로 이 클래스는 다른 Map 구현과 약간 다르게 동작합니다.

null 값과 null 키가 모두 지원됩니다. 이 클래스는 클래스와 HashMap 유사한 성능 특성을 가지며 em 초기 용량</em> 및 em>>load factor</em>의 <효율성 매개 변수가 <동일합니다.

대부분의 컬렉션 클래스와 마찬가지로 이 클래스는 동기화되지 않습니다. 메서드를 사용하여 동기화된 WeakHashMapCollections#synchronizedMap Collections.synchronizedMap 생성할 수 있습니다.

이 클래스는 주로 메서드가 연산자를 사용하여 개체 equals ID를 테스트하는 키 개체와 == 함께 사용하기 위한 것입니다. 이러한 키가 삭제되면 다시 만들 수 없으므로 나중에 해당 키를 WeakHashMap 조회할 수 없으며 해당 항목이 제거되었다는 사실에 놀랄 수 없습니다. 이 클래스는 인스턴스와 같은 String 개체 ID를 기반으로 하지 않는 메서드가 있는 equals 키 개체에서 완벽하게 작동합니다. 그러나 이러한 다시 만들 수 있는 키 개체를 사용하면 키가 삭제된 항목을 자동으로 제거하는 WeakHashMap 것이 혼동될 수 있습니다.

클래스의 WeakHashMap 동작은 가비지 수집기의 동작에 부분적으로 따라 달라지므로 이 클래스에 대해 친숙한 몇 가지(필수는 아님) Map 고정이 유지되지 않습니다. 가비지 수집기는 언제든지 키를 삭제할 수 있으므로 는 WeakHashMap 알 수 없는 스레드가 항목을 자동으로 제거하는 것처럼 동작할 수 있습니다. 특히 instance 동기화 WeakHashMap 하고 해당 변경자 메서드를 호출하지 않더라도 메서드가 시간이 지남에 따라 더 작은 값을 반환하고 메서드가 지정된 키에 대해 isEmpty 를 반환 false 하고 truefalsecontainsKey 나중에 메서드가 지정된 키 get 에 대한 값을 반환 true 하지만 나중에 를 반환하는 경우 메서드가 더 작은 값을 반환null할 수 size 있습니다. 메서드가 put 반환 null 되고 remove 이전에 맵에 있는 것으로 나타난 키에 대해 반환 false 할 메서드와 키 집합의 연속적인 검사에 대해 값 컬렉션 및 항목 집합이 연속적으로 더 적은 수의 요소를 생성하도록 합니다.

WeakHashMap 각 키 개체는 약한 참조의 참조로 간접적으로 저장됩니다. 따라서 키는 맵 내부 및 외부에서 약한 참조가 가비지 수집기에서 지워진 후에만 자동으로 제거됩니다.

<strong>Implementation note:</strong> 의 값 개체 WeakHashMap 는 일반적인 강력한 참조에 의해 유지됩니다. 따라서 값 개체가 직접 또는 간접적으로 자신의 키를 강력하게 참조하지 않도록 주의해야 합니다. 그러면 키가 삭제되지 않기 때문에 주의해야 합니다. 값 개체는 자체를 통해 WeakHashMap 해당 키를 간접적으로 참조할 수 있습니다. 즉, 값 개체는 연결된 값 개체가 첫 번째 값 개체의 키를 강력하게 참조하는 다른 키 개체를 강력하게 참조할 수 있습니다. 맵의 값이 강력한 참조를 포함하는 맵에 의존하지 않는 경우 이를 처리하는 한 가지 방법은 를 삽입하기 전에 값을 직접 WeakReferences 래핑한 다음, 각 getm.put(key, new WeakReference(value))대한 래핑을 해제하는 것입니다.

이 클래스의 모든 "컬렉션 뷰 메서드"에서 반환된 컬렉션의 메서드에서 반환 iterator 되는 반복기는 실패합니다. 반복기가 생성된 후 언제든지 맵이 구조적으로 수정되는 경우 반복기의 자체 remove 메서드를 통하지 않으면 반복기가 을 ConcurrentModificationExceptionthrow합니다. 따라서 동시 수정에 직면하여 반복기는 나중에 결정되지 않은 시간에 임의적이고 비결정적인 동작을 위험에 빠뜨리지 않고 빠르고 깨끗하게 실패합니다.

반복기의 장애 조치(fail-fast) 동작은 일반적으로 비동기화된 동시 수정이 있을 때 하드 보장을 할 수 없으므로 보장할 수 없습니다. 장애 조치(fail-fast) 반복기는 최선을 다해 throw ConcurrentModificationException 합니다. 따라서 정확성을 위해 이 예외에 의존하는 프로그램을 작성하는 것은 잘못된 것입니다. 반복기의 장애 조치(fail-fast) 동작은 버그를 검색하는 데만 사용해야 합니다.

이 클래스는 Java Collections Framework의 멤버입니다.

1.2에 추가되었습니다.

에 대한 Java 설명서입니다 java.util.WeakHashMap.

이 페이지의 일부는 만들고 공유하며 에 설명된 용어에 따라 사용되는 작업을 기반으로 수정됩니다.

생성자

WeakHashMap()

기본 초기 용량(16) 및 로드 팩터(0)를 사용하여 비어 WeakHashMap 있는 새 를 생성합니다.

WeakHashMap(IDictionary)

지정된 맵과 동일한 매핑을 사용하여 새 WeakHashMap 을 생성합니다.

WeakHashMap(Int32)

지정된 초기 용량과 기본 로드 팩터(0)를 사용하여 비어 WeakHashMap 있는 새 를 생성합니다.

WeakHashMap(Int32, Single)

지정된 초기 용량과 지정된 로드 팩터를 사용하여 비어 WeakHashMap 있는 새 를 생성합니다.

WeakHashMap(IntPtr, JniHandleOwnership)

JNI 개체의 관리되는 표현을 만들 때 사용되는 생성자입니다. 런타임에서 호출합니다.

속성

Class

Object의 런타임 클래스를 반환합니다.

(다음에서 상속됨 Object)
Handle

기본 Android instance 대한 핸들입니다.

(다음에서 상속됨 Object)
IsEmpty

추가할 항목

(다음에서 상속됨 AbstractMap)
JniIdentityHashCode

인터페이스의 Map 해시 테이블 기반 구현( <em>약한 키</em> 포함).

(다음에서 상속됨 Object)
JniPeerMembers

인터페이스의 Map 해시 테이블 기반 구현( <em>약한 키</em> 포함).

PeerReference

인터페이스의 Map 해시 테이블 기반 구현( <em>약한 키</em> 포함).

(다음에서 상속됨 Object)
ThresholdClass

이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다.

ThresholdType

이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다.

메서드

Clear()

추가할 항목

(다음에서 상속됨 AbstractMap)
Clone()

이 개체의 복사본을 만들고 반환합니다.

(다음에서 상속됨 Object)
ContainsKey(Object)

추가할 항목

(다음에서 상속됨 AbstractMap)
ContainsValue(Object)

추가할 항목

(다음에서 상속됨 AbstractMap)
Dispose()

인터페이스의 Map 해시 테이블 기반 구현( <em>약한 키</em> 포함).

(다음에서 상속됨 Object)
Dispose(Boolean)

인터페이스의 Map 해시 테이블 기반 구현( <em>약한 키</em> 포함).

(다음에서 상속됨 Object)
EntrySet()

Set 이 맵에 포함된 매핑의 보기를 반환합니다.

Equals(Object)

다른 개체가 이 개체와 "같음"인지 여부를 나타냅니다.

(다음에서 상속됨 Object)
ForEach(IBiConsumer)

인터페이스의 Map 해시 테이블 기반 구현( <em>약한 키</em> 포함).

Get(Object)

추가할 항목

(다음에서 상속됨 AbstractMap)
GetHashCode()

개체의 해시 코드 값을 반환합니다.

(다음에서 상속됨 Object)
JavaFinalize()

가비지 수집에서 개체에 대한 참조가 더 이상 없다고 판단할 때 개체의 가비지 수집기에서 호출됩니다.

(다음에서 상속됨 Object)
KeySet()

추가할 항목

(다음에서 상속됨 AbstractMap)
Notify()

이 개체의 모니터에서 대기 중인 단일 스레드를 해제합니다.

(다음에서 상속됨 Object)
NotifyAll()

이 개체의 모니터에서 대기 중인 모든 스레드를 해제합니다.

(다음에서 상속됨 Object)
Put(Object, Object)

추가할 항목

(다음에서 상속됨 AbstractMap)
PutAll(IDictionary)

추가할 항목

(다음에서 상속됨 AbstractMap)
Remove(Object)

추가할 항목

(다음에서 상속됨 AbstractMap)
ReplaceAll(IBiFunction)

인터페이스의 Map 해시 테이블 기반 구현( <em>약한 키</em> 포함).

SetHandle(IntPtr, JniHandleOwnership)

Handle 속성을 설정합니다.

(다음에서 상속됨 Object)
Size()

추가할 항목

(다음에서 상속됨 AbstractMap)
ToArray<T>()

인터페이스의 Map 해시 테이블 기반 구현( <em>약한 키</em> 포함).

(다음에서 상속됨 Object)
ToString()

개체의 문자열 표현을 반환합니다.

(다음에서 상속됨 Object)
UnregisterFromRuntime()

인터페이스의 Map 해시 테이블 기반 구현( <em>약한 키</em> 포함).

(다음에서 상속됨 Object)
Values()

추가할 항목

(다음에서 상속됨 AbstractMap)
Wait()

현재 스레드가 각성될 때까지 대기하도록 합니다. 일반적으로 <알림을<> 받>거나<<> 중단/em>합니다.

(다음에서 상속됨 Object)
Wait(Int64)

현재 스레드가 깨어날 때까지 대기하게 하며, 일반적으로 <알림을 받<>거나 중단</>em>>을 받거나 <일정량의 실시간이 경과할 때까지 대기합니다.

(다음에서 상속됨 Object)
Wait(Int64, Int32)

현재 스레드가 깨어날 때까지 대기하게 하며, 일반적으로 <알림을 받<>거나 중단</>em>>을 받거나 <일정량의 실시간이 경과할 때까지 대기합니다.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

IJavaPeerable.Disposed()

인터페이스의 Map 해시 테이블 기반 구현( <em>약한 키</em> 포함).

(다음에서 상속됨 Object)
IJavaPeerable.DisposeUnlessReferenced()

인터페이스의 Map 해시 테이블 기반 구현( <em>약한 키</em> 포함).

(다음에서 상속됨 Object)
IJavaPeerable.Finalized()

인터페이스의 Map 해시 테이블 기반 구현( <em>약한 키</em> 포함).

(다음에서 상속됨 Object)
IJavaPeerable.JniManagedPeerState

인터페이스의 Map 해시 테이블 기반 구현( <em>약한 키</em> 포함).

(다음에서 상속됨 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

인터페이스의 Map 해시 테이블 기반 구현( <em>약한 키</em> 포함).

(다음에서 상속됨 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

인터페이스의 Map 해시 테이블 기반 구현( <em>약한 키</em> 포함).

(다음에서 상속됨 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

인터페이스의 Map 해시 테이블 기반 구현( <em>약한 키</em> 포함).

(다음에서 상속됨 Object)

확장 메서드

JavaCast<TResult>(IJavaObject)

Android 런타임 확인 형식 변환을 수행합니다.

JavaCast<TResult>(IJavaObject)

인터페이스의 Map 해시 테이블 기반 구현( <em>약한 키</em> 포함).

GetJniTypeName(IJavaPeerable)

인터페이스의 Map 해시 테이블 기반 구현( <em>약한 키</em> 포함).

적용 대상