IMap 인터페이스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
키를 값에 매핑하는 개체입니다.
[Android.Runtime.Register("java/util/Map", "", "Java.Util.IMapInvoker")]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public interface IMap : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/Map", "", "Java.Util.IMapInvoker")>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })>]
type IMap = interface
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 파생
- 특성
- 구현
설명
키를 값에 매핑하는 개체입니다. 맵에는 중복 키가 포함될 수 없습니다. 각 키는 최대 하나의 값에 매핑할 수 있습니다.
이 인터페이스는 인터페이스가 아닌 완전히 추상적인 클래스인 클래스를 대신 Dictionary
합니다.
인터페이스는 Map
맵의 콘텐츠를 키 집합, 값 컬렉션 또는 키-값 매핑 집합으로 볼 수 있는 세 가지 컬렉션 뷰를 제공합니다. 지도의 순서 는 맵의 컬렉션 뷰에서 반복기가 해당 요소를 반환하는 순서로 정의됩니다. 클래스와 같은 TreeMap
일부 맵 구현은 순서를 구체적으로 보장합니다. 클래스와 같은 일부 맵 구현은 HashMap
그렇지 않습니다.
참고: 변경 가능한 개체가 지도 키로 사용되는 경우 주의해야 합니다. 개체가 맵의 키인 동안 비교에 영향을 equals
주는 방식으로 개체 값이 변경되는 경우 맵의 동작은 지정되지 않습니다. 이 금지의 특별한 경우는 지도가 키로 자신을 포함하는 것이 허용되지 않는다는 것입니다. 지도가 값으로 포함되는 것은 허용되지만, 및 hashCode
메서드는 더 이상 이러한 맵에 잘 정의되지 않는 것이 좋습니다equals
.
모든 범용 맵 구현 클래스는 빈 맵을 만드는 void(인수 없음) 생성자와 형식의 Map
단일 인수가 있는 생성자라는 두 개의 "표준" 생성자를 제공해야 합니다. 이 생성자는 인수와 동일한 키-값 매핑을 사용하여 새 맵을 만듭니다. 실제로 후자의 생성자를 사용하면 모든 맵을 복사하여 원하는 클래스의 동일한 맵을 생성할 수 있습니다. 인터페이스에 생성자를 포함할 수 없으므로 이 권장 사항을 적용할 수 있는 방법은 없지만 JDK의 모든 범용 맵 구현은 준수합니다.
이 인터페이스에 포함된 "파괴적인" 메서드, 즉 작동하는 맵을 수정하는 메서드는 이 맵이 작업을 지원하지 않는 경우 throw UnsupportedOperationException
하도록 지정됩니다. 이 경우 이러한 메서드는 호출이 맵에 영향을 주지 않을 경우 을 throw UnsupportedOperationException
할 수 있지만 필요하지는 않습니다. 예를 들어 수정할 수 없는 맵에서 메서드를 #putAll(Map)
호출하면 매핑이 "겹쳐진" 맵이 비어 있는 경우 예외를 throw할 수 있지만 필요하지는 않습니다.
일부 맵 구현에는 포함될 수 있는 키와 값에 대한 제한이 있습니다. 예를 들어 일부 구현에서는 null 키 및 값을 금지하고 일부는 키 형식에 제한이 있습니다. 부적격 키 또는 값을 삽입하려고 시도하면 선택되지 않은 예외(일반적으로 NullPointerException
또는 ClassCastException
)가 throw됩니다. 부적격 키 또는 값이 있는지 쿼리하려고 하면 예외가 throw되거나 단순히 false를 반환할 수 있습니다. 일부 구현은 이전 동작을 나타내고 일부는 후자를 표시합니다. 일반적으로 부적격 키 또는 완료로 인해 부적격 요소가 맵에 삽입되지 않는 값에 대한 작업을 시도하면 예외가 throw되거나 구현 옵션에서 성공할 수 있습니다. 이러한 예외는 이 인터페이스의 사양에서 "선택 사항"으로 표시됩니다.
Collections Framework 인터페이스의 많은 메서드는 메서드 측면에서 Object#equals(Object) equals
정의됩니다. 예를 들어 메서드의 #containsKey(Object) containsKey(Object key)
사양은 "이 맵에 이러한 (key==null ? k==null : key.equals(k))
키 k
에 대한 매핑이 포함된 경우에만 를 반환 true
합니다." 이 사양은 null이 아닌 인수 key
를 Map.containsKey
사용하여 호출하면 키 k
에 대해 호출된다는 것을 암시해서는 안 됩니다key.equals(k)
. 구현은 두 키의 equals
해시 코드를 먼저 비교하여 호출을 피할 수 있는 최적화를 자유롭게 구현할 수 있습니다. (사양은 Object#hashCode()
같지 않은 해시 코드가 있는 두 개체가 같을 수 없음을 보장합니다.) 일반적으로 다양한 Collections Framework 인터페이스의 구현은 구현자가 적절하다고 판단하는 모든 기본 메서드의 지정된 동작을 Object
자유롭게 활용할 수 있습니다.
지도의 재귀 순회를 수행하는 일부 맵 작업은 맵이 직접 또는 간접적으로 포함된 자체 참조 인스턴스에 대한 예외로 인해 실패할 수 있습니다. 여기에는 , equals()
및 hashCode()
메서드가 clone()
toString()
포함됩니다. 구현은 필요에 따라 자체 참조 시나리오를 처리할 수 있지만 대부분의 현재 구현은 그렇지 않습니다.
<h2>"수정할 수 없음">수정할 수 없는 지도</h2>
, Map#ofEntries(Map.Entry...) Map.ofEntries
및 Map#copyOf Map.copyOf
정적 팩터리 메서드는 Map#of() Map.of
수정할 수 없는 맵을 만드는 편리한 방법을 제공합니다. Map
이러한 메서드에서 만든 인스턴스에는 다음과 같은 특성이 있습니다.
<ul><li>그들은 i>unmodifiable</i>입니다<. 키와 값은 추가, 제거 또는 업데이트할 수 없습니다. 맵에서 모든 변경자 메서드를 호출하면 항상 UnsupportedOperationException
throw됩니다. 그러나 포함된 키 또는 값 자체가 변경 가능한 경우 맵이 일관되지 않게 동작하거나 해당 내용이 변경되는 것처럼 보일 수 있습니다. <li>키와 값을 허용하지 null
않습니다. 키 또는 값을 사용하여 만들 null
려고 하면 이 발생합니다 NullPointerException
. <li>모든 키와 값을 직렬화할 수 있는 경우 직렬화할 수 있습니다. <li>생성 시 중복 키를 거부합니다. 정적 팩터리 메서드에 전달된 중복 키의 결과는 입니다 IllegalArgumentException
. <li>매핑의 반복 순서는 지정되지 않으며 변경될 수 있습니다. <li>값 기반입니다. 프로그래머는 #equals(Object)인 인스턴스를 서로 교환 가능한 인스턴스로 취급해야 하며 동기화에 사용하면 안 되거나 예측할 수 없는 동작이 발생할 수 있습니다. 예를 들어 향후 릴리스에서는 동기화가 실패할 수 있습니다. 호출자는 반환된 인스턴스의 ID를 가정하지 않아야 합니다. 팩터리에서는 새 인스턴스를 만들거나 기존 인스턴스를 다시 사용할 수 있습니다. <li>직렬화된 양식 페이지에 지정된 대로 serialize 됩니다. </ul>
이 인터페이스는 Java Collections Framework의 멤버입니다.
1.2에 추가되었습니다.
에 대한 Java 설명서입니다 java.util.Map
.
이 페이지의 일부는 만들고 공유하며 에 설명된 용어에 따라 사용되는 작업을 기반으로 수정됩니다.
속성
Handle |
기본 Android 개체의 JNI 값을 가져옵니다. (다음에서 상속됨 IJavaObject) |
IsEmpty |
이 맵이 비어 있는지 여부를 반환합니다. |
JniIdentityHashCode |
|
JniManagedPeerState |
관리되는 피어의 상태입니다. (다음에서 상속됨 IJavaPeerable) |
JniPeerMembers |
멤버 액세스 및 호출 지원. (다음에서 상속됨 IJavaPeerable) |
PeerReference |
JniObjectReference 래핑된 Java 개체 instance 의 를 반환합니다. (다음에서 상속됨 IJavaPeerable) |
메서드
Clear() |
이 맵에서 모든 매핑을 제거합니다(선택적 작업). |
Compute(Object, IBiFunction) |
지정된 키와 현재 매핑된 값에 대한 매핑을 계산하려고 시도합니다(또는 |
ComputeIfAbsent(Object, IFunction) |
지정된 키가 값과 아직 연결되지 않았거나 에 매핑 |
ComputeIfPresent(Object, IBiFunction) |
지정된 키의 값이 있고 null이 아닌 경우 키와 현재 매핑된 값이 지정된 경우 새 매핑을 계산하려고 시도합니다. |
ContainsKey(Object) |
이 맵에 지정된 키에 대한 매핑이 포함되어 있으면 를 반환 |
ContainsValue(Object) |
이 맵이 하나 이상의 키를 지정된 값에 매핑하는 경우 를 반환 |
CopyOf(IDictionary) |
지정된 맵의 항목을 포함하는 수정할 수 없는 맵을 반환합니다. |
Disposed() |
instance 삭제되었을 때 호출됩니다. (다음에서 상속됨 IJavaPeerable) |
DisposeUnlessReferenced() |
이 instance 대한 미해결 참조가 없으면 를 호출 |
Entry(Object, Object) |
지정된 키와 값을 포함하는 변경할 수 없는 |
EntrySet() |
|
Equals(Object) |
지정된 개체를 이 맵과 비교하여 같은지 확인합니다. |
Finalized() |
instance 완료되면 호출됩니다. (다음에서 상속됨 IJavaPeerable) |
ForEach(IBiConsumer) |
모든 항목이 처리되거나 작업이 예외를 throw할 때까지 이 맵의 각 항목에 대해 지정된 작업을 수행합니다. |
Get(Object) |
지정된 키가 매핑되는 값을 반환하거나 |
GetHashCode() |
이 맵의 해시 코드 값을 반환합니다. |
GetOrDefault(Object, Object) |
지정된 키가 매핑되는 값을 반환하거나 |
KeySet() |
|
Merge(Object, Object, IBiFunction) |
지정된 키가 값과 아직 연결되지 않았거나 null과 연결된 경우 지정된 null이 아닌 값과 연결합니다. |
Of() |
매핑이 0인 수정할 수 없는 맵을 반환합니다. |
Of(Object, Object) |
단일 매핑을 포함하는 수정할 수 없는 맵을 반환합니다. |
Of(Object, Object, Object, Object) |
두 개의 매핑을 포함하는 수정할 수 없는 맵을 반환합니다. |
Of(Object, Object, Object, Object, Object, Object) |
세 개의 매핑을 포함하는 수정할 수 없는 맵을 반환합니다. |
Of(Object, Object, Object, Object, Object, Object, Object, Object) |
네 개의 매핑을 포함하는 수정할 수 없는 맵을 반환합니다. |
Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object) |
5개의 매핑이 포함된 수정할 수 없는 맵을 반환합니다. |
Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object) |
6개의 매핑을 포함하는 수정할 수 없는 맵을 반환합니다. |
Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object) |
7개의 매핑을 포함하는 수정할 수 없는 맵을 반환합니다. |
Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object) |
8개의 매핑을 포함하는 수정할 수 없는 맵을 반환합니다. |
Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object) |
9개의 매핑을 포함하는 수정할 수 없는 맵을 반환합니다. |
Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object) |
10개의 매핑을 포함하는 수정할 수 없는 맵을 반환합니다. |
OfEntries(IMapEntry[]) |
지정된 항목에서 추출된 키와 값을 포함하는 변경할 수 없는 맵을 반환합니다. |
Put(Object, Object) |
지정된 값을 이 맵의 지정된 키와 연결합니다(선택적 작업). |
PutAll(IDictionary) |
지정된 맵의 모든 매핑을 이 맵에 복사합니다(선택적 작업). |
PutIfAbsent(Object, Object) |
지정된 키가 값과 아직 연결되지 않았거나 에 매핑 |
Remove(Object) |
키에 대한 매핑이 있는 경우 이 맵에서 제거합니다(선택적 작업). |
Remove(Object, Object) |
지정된 키에 대한 항목이 현재 지정된 값에 매핑된 경우에만 제거합니다. |
Replace(Object, Object) |
지정된 키에 대한 항목을 현재 일부 값에 매핑된 경우에만 바꿉니다. |
Replace(Object, Object, Object) |
현재 지정된 값에 매핑된 경우에만 지정된 키의 항목을 바꿉니다. |
ReplaceAll(IBiFunction) |
모든 항목이 처리되거나 함수가 예외를 throw할 때까지 각 항목의 값을 해당 항목에서 지정된 함수를 호출한 결과로 바꿉니다. |
SetJniIdentityHashCode(Int32) |
에서 반환 |
SetJniManagedPeerState(JniManagedPeerStates) |
키를 값에 매핑하는 개체입니다. (다음에서 상속됨 IJavaPeerable) |
SetPeerReference(JniObjectReference) |
에서 반환 |
Size() |
이 맵의 키-값 매핑 수를 반환합니다. |
UnregisterFromRuntime() |
런타임이 이후 Java.Interop.JniRuntime+JniValueManager.PeekValue 호출에서 반환되지 않도록 이 instance 등록을 취소합니다. (다음에서 상속됨 IJavaPeerable) |
Values() |
|
확장 메서드
JavaCast<TResult>(IJavaObject) |
Android 런타임 확인 형식 변환을 수행합니다. |
JavaCast<TResult>(IJavaObject) |
키를 값에 매핑하는 개체입니다. |
GetJniTypeName(IJavaPeerable) |
키를 값에 매핑하는 개체입니다. |