JavaTM Platform
Standard Ed. 6

java.util
인터페이스 Map<K, V>

형태 파라미터:
K - 이 맵이 보관 유지하는 키의 형태
V - 맵 되는 값의 형태
기존의 서브 인터페이스의 일람:
Bindings , ConcurrentMap <K, V>, ConcurrentNavigableMap <K, V>, LogicalMessageContext , MessageContext , NavigableMap <K, V>, SOAPMessageContext , SortedMap <K, V>
기존의 구현 클래스의 일람:
AbstractMap , Attributes , AuthProvider , ConcurrentHashMap , ConcurrentSkipListMap , EnumMap , HashMap , Hashtable , IdentityHashMap , LinkedHashMap , PrinterStateReasons , Properties , Provider , RenderingHints , SimpleBindings , TabularDataSupport , TreeMap , UIDefaults , WeakHashMap


public interface Map<K, V>

키를 값에 매핑 하는 객체입니다. 맵에는, 동일한 키를 복수 등록할 수 없습니다. 각 키는 1 개의 값밖에 매핑 할 수 없습니다.

이 인터페이스는, 인터페이스라고 하는 것보다 오히려 완전하게 추상 클래스에서 만난 Dictionary 클래스에 대신하는 것입니다.

Map 인터페이스가 제공하는 3 개의 코레크션뷰에 의해, 맵의 내용을, 키세트, 값의 컬렉션, 혹은 키와 값의 매핑세트로서 표시할 수 있게 됩니다. 맵의 「순서」는, 맵의 코레크션뷰의 반복자가 요소를 돌려줄 때의 순서로서 정의됩니다. TreeMap 클래스 등 일부의 맵의 구현에서는, 순서에 대해 보증합니다만,HashMap 클래스등의 구현에서는 순서는 보증되지 않습니다.

주:가변 객체를 맵 키로서 사용하는 경우는 세심의 주의가 필요합니다. 객체가 맵내의 키일 때,equals 의 비교에 영향을 주는 방법으로 객체의 값이 변경되었을 경우, 맵의 동작은 보증되지 않습니다. 이 금지 사항의 특수한 예로서 맵이 그것 자신을 키로서 가지지 못하는 것을 들 수 있습니다. 맵이 그것 자신을 값으로 해서 가지는 것은 허가됩니다만, 그 경우는 세심의 주의가 필요합니다. 그러한 맵에서는 equals 메소드 및 hashCode 메소드의 동작은 보증되지 않습니다.

범용 맵의 구현 클래스는 모두, 다음의 2 개의 표준적인 생성자 을 제공하도록 해 주세요. 2 개의 표준적인 생성자 이란, void (인수 없음) 생성자 과Map 형의 인수를 1 개 취하는 생성자 입니다. 전자는 빈 상태(empty)의 맵을 작성해, 후자는 같은 키와 값의 매핑을 인수로서 가지는 새로운 맵을 작성합니다. 그 결과, 사용자는, 후자의 생성자 을 사용해 임의의 맵을 카피하는 것으로써, 필요한 클래스와 등가인 맵을 작성할 수 있습니다.

이것은 강제적인 것이 아닙니다만 (인터페이스가 생성자 을 가질 수가 없기 때문에), JDK 에서의 범용 맵의 구현은 모두 이것에 따르고 있습니다. 이 맵이 오퍼레이션을 지원하고 있지 않는 경우, 이 인터페이스 (처리되는 맵을 수정하는 메소드)에 포함되어 있는 「파괴적인」메소드는,UnsupportedOperationException 를 throw 하도록(듯이) 지정되고 있습니다. 이 때, 호출이 맵에 영향을 미치지 않는 경우, 이러한 메소드는 UnsupportedOperationException 를 throw 하는 일이 있습니다만, 필수가 아닙니다. 예를 들어, 매핑을 「거듭해 맞춘다」맵이 빈 상태(empty)의 경우에, 변경 불가능한 맵으로 putAll(Map) 메소드를 호출하면(자), 예외를 throw 하는 일이 있습니다만, 필수가 아닙니다.

맵의 구현에는, 포함할 수 있는 키와 값에 제한이 있는 것도 있습니다. 예를 들어, null 키와 null 치를 금지하는 구현이나, null 키의 형태에 제한이 있는 구현도 있습니다. 부적당한 키 또는 값을 삽입하려고 하면(자), 일반적으로 NullPointerException 또는 ClassCastException 와 같은 체크되지 않는 예외가 throw 됩니다. 부적당한 키나 값이 있을지 어떨지를 조회하려고 하면(자), 예외를 throw 하는 경우나, 다만 false 를 돌려주는 경우도 있습니다. 전의 동작을 금지하는 구현도 있으면, 후의 동작을 금지하는 구현도 있습니다. 많은 경우는, 맵에 부적격인 요소를 삽입하지 않는 부적격인 키 또는 값을 처리하려고 하면(자), 구현의 재량으로, 예외가 throw 되는 경우나, 처리가 유효하게 되는 경우가 있습니다. 이 인터페이스에 관한 그러한 예외는, 「임의」의 스펙으로서 마크 됩니다.

이 인터페이스는,Java Collections Framework 의 멤버입니다.

Collections Framework 인터페이스내의 다수의 메소드는,equals 메소드와의 관련으로 정의됩니다. 예를 들어,containsKey(Object key) 메소드의 스펙은, 「이 맵 컬렉션에 (key==null ? k==null : key.equals(k)) 를 채우는 키 k 가 포함되는 경우에게만,true 를 돌려준다」라고 하는 것입니다. . "이 스펙은, 「null 이외의 인수 key 를 사용해 Map.containsKey 를 호출하면(자), 키 kkey.equals(k) 가 불려 간다」라고 이해해야 하지는 않습니다. 구현은, 최초로 2 개의 키의 해시 코드를 비교하는 등,equals 호출을 회피하기 위한 최적화를 자유롭게 구현할 수 있습니다. (Object.hashCode() 스펙에서는, 등가가 아닌 해시 코드를 보관 유지하는 2 개의 객체는 등가가 아닌 것이 보증됩니다). 일반적으로, 다양한 Collections Framework 인터페이스의 구현으로, 구현자가 적절이라고 판단한다면, 기반이 되는 Object 메소드의 지정된 동작을 자유롭게 이용할 수 있습니다.

도입된 버젼:
1.2
관련 항목:
HashMap , TreeMap , Hashtable , SortedMap , Collection , Set

상자의 클래스의 개요
static interface Map.Entry <K ,V >
          맵의 엔트리 (키와 값의 페어)입니다.
 
메소드의 개요
 void clear ()
          맵으로부터 매핑을 모두 삭제합니다 (임의의 오퍼레이션).
 boolean containsKey (Object  key)
          맵이 지정된 키의 매핑을 보관 유지하는 경우에 true 를 돌려줍니다.
 boolean containsValue (Object  value)
          맵이 1 개 또는 복수의 키와 지정된 값을 매핑 하고 있는 경우에 true 를 돌려줍니다.
 Set <Map.Entry <K ,V >> entrySet ()
          이 맵에 포함되는 맵 Set 뷰를 돌려줍니다.
 boolean equals (Object  o)
          지정된 객체가 이 맵과 동일한지 어떤지를 비교합니다.
 V get (Object  key)
          지정된 키가 맵 되고 있는 값을 돌려줍니다.
 int hashCode ()
          맵의 해시 코드값를 돌려줍니다.
 boolean isEmpty ()
          맵이 키와 값의 매핑을 보관 유지하지 않는 경우에 true 를 돌려줍니다.
 Set <K > keySet ()
          이 맵에 포함되는 키 Set 뷰를 돌려줍니다.
 V put (K  key, V  value)
          지정된 값과 지정된 키를 이 맵에 관련짓습니다 (임의의 오퍼레이션).
 void putAll (Map <? extends K ,? extends V > m)
          지정된 맵의 모든 매핑을 이 맵에 카피합니다 (임의의 오퍼레이션).
 V remove (Object  key)
          키의 매핑이 있는 경우에, 그 매핑을 이 맵으로부터 삭제합니다 (임의의 오퍼레이션).
 int size ()
          맵내의 키치 매핑의 수를 돌려줍니다.
 Collection <V > values ()
          이 맵에 포함되는 값 Collection 뷰를 돌려줍니다.
 

메소드의 상세

size

int size()
맵내의 키치 매핑의 수를 돌려줍니다. 맵에 Integer.MAX_VALUE 보다 많은 요소가 있는 경우는,Integer.MAX_VALUE 를 돌려줍니다.

반환값:
맵내의 키와 값의 매핑의 수

isEmpty

boolean isEmpty()
맵이 키와 값의 매핑을 보관 유지하지 않는 경우에 true 를 돌려줍니다.

반환값:
맵이 키와 값의 매핑을 보관 유지하지 않는 경우는 true

containsKey

boolean containsKey(Object  key)
맵이 지정된 키의 매핑을 보관 유지하는 경우에 true 를 돌려줍니다. 즉, 이 맵에,(key==null ? k==null : key.equals(k)) 가 되는 키 k 가 포함되어 있는 경우에만 true 를 돌려줍니다. 이러한 매핑이 1 개만 있습니다.

파라미터:
key - 맵에 있을지 어떨지가 판정되는 키
반환값:
맵이 지정된 키의 매핑을 보관 유지하는 경우는 true
예외:
ClassCastException - 키가 맵에 적합하지 않는 형태의 경우 (생략 가능)
NullPointerException - 지정된 키가 null 이며, 이 맵이 null 키를 허가하지 않는 경우 (생략 가능)

containsValue

boolean containsValue(Object  value)
맵이 1 개 또는 복수의 키와 지정된 값을 매핑 하고 있는 경우에 true 를 돌려줍니다. 즉, 맵에,(value==null ? v==null : value.equals(v)) 가 되는 값 v 에의 매핑이 1 개 이상 있는 경우에만 true 를 돌려줍니다. Map 인터페이스의 대부분의 구현으로, 이 오퍼레이션에 걸리는 시간은 맵의 사이즈에 정비례 합니다.

파라미터:
value - 맵에 있을지 어떨지를 판정되는 값
반환값:
맵이 1 개 또는 복수의 키와 지정된 값을 매핑 하고 있는 경우는 true
예외:
ClassCastException - 치가 맵에 적합하지 않는 형태의 경우 (생략 가능)
NullPointerException - 지정된 값이 null 이며, 이 맵이 null 치를 허가하지 않는 경우 (생략 가능)

get

V  get(Object  key)
지정된 키가 맵 되고 있는 값을 돌려줍니다. 그 키의 매핑이 이 맵에 포함되지 않은 경우는 null 를 돌려줍니다.

즉, 이 메소드는,(key==null ? k==null : key.equals(k)) 가 되는 키 k 로부터 값 v 에의 매핑이 이 맵에 포함되어 있는 경우는 v 를 돌려주어, 그 이외의 경우는 null 를 돌려줍니다. 이러한 매핑이 1 개만 있습니다.

이 맵이 null 치를 허가하는 경우, 반환값의 null 는, 맵이 키의 매핑을 보관 유지하고 있지 않는 것을 나타낸다고는인가 선. 즉, 맵이 명시적으로 키를 null 에 맵 하는 일도 있습니다. containsKey 오퍼레이션을 사용하면(자), 이 2 개의 경우를 구별할 수 있습니다.

파라미터:
key - 관련지을 수 있었던 값이 반환되는 키
반환값:
지정된 키가 맵 되고 있는 값. 그 키의 매핑이 이 맵에 포함되지 않은 경우는 null
예외:
ClassCastException - 키가 맵에 적합하지 않는 형태의 경우 (생략 가능)
NullPointerException - 지정된 키가 null 이며, 이 맵이 null 키를 허가하지 않는 경우 (생략 가능)

put

V  put(K  key,
      V  value)
지정된 값과 지정된 키를 이 맵에 관련짓습니다 (임의의 오퍼레이션). 맵에 벌써 이 키에 대한 매핑이 있는 경우, 낡은 값은 지정된 값으로 옮겨집니다. m.containsKey(k)true 를 돌려주는 경우에 한정해, 맵 m 는, 키 k 의 매핑을 포함한다고 말할 수 있습니다.

파라미터:
key - 지정된 값을 관련지을 수 있는 키
value - 지정된 키에 관련지을 수 있는 값
반환값:
key 에 이전에 관련지을 수 있고 있던 값. key 의 매핑이 존재하지 않았던 경우는 null. (null 의 반환값은, 구현이 null 치를 지원하고 있는 경우,keynull 를 이전 관련짓고 있던 맵을 나타내는 경우도 있다)
예외:
UnsupportedOperationException - put 오퍼레이션이 이 맵으로 지원되지 않는 경우
ClassCastException - 지정된 키 또는 값의 클래스가 원인으로, 이 맵에 그것들을 포함할 수 없는 경우
NullPointerException - 지정된 키 또는 값이 null 이며, 이 맵이 null 의 키 또는 값을 허가하지 않는 경우
IllegalArgumentException - 지정된 키 또는 값이 있는 프로퍼티이 원인으로, 이 맵에 그것들을 포함할 수 없는 경우

remove

V  remove(Object  key)
키의 매핑이 있는 경우에, 그 매핑을 이 맵으로부터 삭제합니다 (임의의 오퍼레이션). k==null :key.equals(k)) 라고 하는 조건으로, 키 k 로부터 값 v 까지 매핑이 맵에 포함되는 경우, 이 매핑은 삭제됩니다. 맵은 이러한 매핑을 1 개만 포함합니다.

이 맵이 이전에 이 키를 관련짓고 있던 값을 돌려줍니다. 키에 대한 매핑이 맵에 없었던 경우는 null 를 돌려줍니다.

이 맵이 null 치를 허가하는 경우, 반환값의 null 는, 맵이 키의 매핑을 보관 유지하고 있지 않았던 것을 나타낸다고는인가 선. 즉, 맵이 명시적으로 키를 null 에 맵 하고 있던 가능성도 있습니다.

한 번 호출이 돌아가면, 맵은 지정된 키의 매핑을 포함하지 않습니다.

파라미터:
key - 매핑이 맵으로부터 삭제되는 키
반환값:
key 에 이전에 관련지을 수 있고 있던 값. key 의 매핑이 존재하지 않았던 경우는 null.
예외:
UnsupportedOperationException - remove 오퍼레이션이 이 맵으로 지원되지 않는 경우
ClassCastException - 키가 맵에 적합하지 않는 형태의 경우 (생략 가능)
NullPointerException - 지정된 키가 null 이며, 이 맵이 null 키를 허가하지 않는 경우 (생략 가능)

putAll

void putAll(Map <?  extends K ,?  extends V > m)
지정된 맵의 모든 매핑을 이 맵에 카피합니다 (임의의 오퍼레이션). 지정된 맵의 키 k 로부터 값 v 까지의 각 매핑에 관해서, 이 호출의 효과는, 맵으로 put(k, v) 를 호출했을 경우와 같습니다. 오퍼레이션의 진행중에, 지정된 맵이 변경되었을 경우의, 이 오퍼레이션의 동작은 정의되고 있지 않습니다.

파라미터:
m - 맵에 포함되는 매핑
예외:
UnsupportedOperationException - putAll 오퍼레이션이 이 맵으로 지원되지 않는 경우
ClassCastException - 지정된 맵내의 키 또는 값의 클래스가 원인으로, 맵에 포함할 수 없는 경우
NullPointerException - 지정된 맵이 null 인 경우, 또는 이 맵이 null 의 키 또는 값을 허가하지 않고, 지정된 맵에 null 의 키 또는 값이 포함되어 있는 경우
IllegalArgumentException - 지정된 맵내가 있는 키 또는 값이 있는 프로퍼티이 원인으로, 맵에 포함할 수 없는 경우

clear

void clear()
맵으로부터 매핑을 모두 삭제합니다 (임의의 오퍼레이션). 이 호출이 돌아오면(자), 맵은 비웁니다.

예외:
UnsupportedOperationException - clear 오퍼레이션이 이 맵으로 지원되지 않는 경우

keySet

Set <K > keySet()
이 맵에 포함되는 키 Set 뷰를 돌려줍니다. 세트는 맵과 연동하고 있으므로, 맵에 대한 변경은 세트에 반영되어 또, 세트에 대한 변경은 맵에 반영됩니다. 세트의 반복 처리중으로 맵이 변경되었을 경우, 반복 처리의 결과는 정의되지 않습니다 (반복자 자신의 remove 오퍼레이션을 제외하다). 삭제는,Iterator.remove,Set.remove,removeAll,retainAll, 및 clear 의 각 오퍼레이션을 통해 실시합니다. Set 는,add 오퍼레이션이나 addAll 오퍼레이션은 지원하고 있습니다.

반환값:
맵에 포함되어 있는 키의 셋트뷰

values

Collection <V > values()
이 맵에 포함되는 값 Collection 뷰를 돌려줍니다. 컬렉션은 맵과 연동하고 있으므로, 맵에 대한 변경은 컬렉션에 반영되어 또 컬렉션에 대한 변경은 맵에 반영됩니다. 컬렉션의 반복 처리중으로 맵이 변경되었을 경우, 반복 처리의 결과는 정의되지 않습니다 (반복자 자신의 remove 오퍼레이션을 제외하다). 컬렉션은 요소의 삭제를 지원하고 있어, 대응하는 매핑을 맵으로부터 삭제할 수 있습니다. 삭제는,Iterator.remove,Collection.remove,removeAll,retainAll, 및 clear 오퍼레이션을 통해 실시합니다. Set 는,add 오퍼레이션이나 addAll 오퍼레이션은 지원하고 있습니다.

반환값:
맵내에 포함되어 있는 값의 코레크션뷰

entrySet

Set <Map.Entry <K ,V >> entrySet()
이 맵에 포함되는 맵 Set 뷰를 돌려줍니다. 세트는 맵과 연동하고 있으므로, 맵에 대한 변경은 세트에 반영되어 또, 세트에 대한 변경은 맵에 반영됩니다. 세트에 대한 반복의 처리중으로 맵이 변경되었을 경우는, 반복 처리의 결과는 정의되지 않습니다 (반복자 자신의 remove 오퍼레이션, 또는 반복자에 의해 반환되는 맵 엔트리에 대한 setValue 오퍼레이션을 제외하다). 세트는, 요소의 삭제를 지원하고 있어, 대응하는 매핑을 맵으로부터 삭제할 수 있습니다. 삭제는,Iterator.remove,Set.remove,removeAll,retainAll, 및 clear 의 각 오퍼레이션을 통해 실시합니다. Set 는,add 오퍼레이션이나 addAll 오퍼레이션은 지원하고 있습니다.

반환값:
맵내에 보관 유지되고 있는 매핑의 셋트뷰

equals

boolean equals(Object  o)
지정된 객체가 이 맵과 동일한지 어떤지를 비교합니다. 지정된 객체가 맵이며, 2 개의 맵이 같은 매핑을 나타내는 경우에 true 를 돌려줍니다. 즉,m1.entrySet(). equals(m2.entrySet()) 인 경우, 2 개의 맵 m1m2 는 같은 매핑을 나타냅니다. 이것에 의해,Map 인터페이스의 구현이 다른 경우에서도,equals 메소드가 올바르게 동작하는 것이 보증됩니다.

오버라이드(override):
클래스 Object 내의 equals
파라미터:
o - 이 맵과 동일한지 어떤지를 비교하는 객체
반환값:
지정된 객체가 맵과 동일한 경우는 true
관련 항목:
Object.hashCode() , Hashtable

hashCode

int hashCode()
맵의 해시 코드값를 돌려줍니다. 맵의 해시 코드는, 맵의 entrySet() 뷰에 있는 각 엔트리의 해시 코드의 합계입니다. 이것에 의해,Object.hashCode() 의 일반 규약으로 요구되는 대로, 임의의 2 개세트 m1m2 에 대해,m1.equals(m2) 의 경우 m1.hashCode() ==m2.hashCode() 가 됩니다.

오버라이드(override):
클래스 Object 내의 hashCode
반환값:
맵의 해시 코드값
관련 항목:
Map.Entry.hashCode() , Object.equals(Object) , equals(Object)

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.