JavaTM 2
Platform
Std.  Ed.  v1. 4.0

java.util
인터페이스 Map

기존의 서브 인터페이스의 일람:
SortedMap
기존의 구현 클래스의 일람:
AbstractMap , Attributes , HashMap , Hashtable , IdentityHashMap , RenderingHints , TreeMap , WeakHashMap

public interface Map

키를 값에 매핑 하는 오브젝트입니다. MAP에는 동일한 키를 복수 등록할 수 없습니다. 각 키는 1 개의 값밖에 매핑 할 수 없습니다.

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

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

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

범용 MAP의 구현 클래스는 모두, 다음의 2 개의 표준적인 constructor를 제공하도록 해 주세요. 2 개의 표준적인 constructor 이란, void (인수 없음) constructor 과Map 형의 인수를 1 개 취하는 constructor 입니다. 전자는 하늘의 MAP를 작성해, 후자는 같은 키와 값의 매핑을 인수로서 가지는 새로운 MAP를 작성합니다. 그 결과, 유저는 후자의 constructor를 사용해 임의의 MAP를 카피하는 것으로써, 필요한 클래스와 등가인 MAP를 작성할 수 있습니다. 이것은 강제적인 것이 아닙니다만 (인터페이스가 constructor를 가질 수가 없기 때문에), SDK 에서의 범용 MAP의 구현은 모두 이것에 따르고 있습니다.

이 MAP가 오퍼레이션을 서포트하고 있지 않는 경우, 이 인터페이스 (처리되는 MAP를 수정하는 메소드)에 포함되어 있는 「파괴적인」메소드는 UnsupportedOperationException 를 슬로우 하도록(듯이) 지정되고 있습니다. 이 때, 호출이 MAP에 영향을 미치지 않는 경우, 이러한 메소드는 UnsupportedOperationException 를 슬로우 하는 일이 있습니다만, 필수가 아닙니다. 예를 들어, 매핑을 「거듭해 맞춘다」MAP가 비었을 경우에, 변경 불가능한 MAP로 putAll(Map) 메소드를 호출하면(자), 예외를 슬로우 하는 일이 있습니다만, 필수가 아닙니다.

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

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

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

메소드의 상세

size

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

반환값:
MAP내의 키치 매핑의 수

isEmpty

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

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

containsKey

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

파라미터:
key - MAP에 있을지 어떨지가 판정되는 키
반환값:
MAP가 지정의 키의 매핑을 보관 유지하는 경우는 true
예외:
ClassCastException - 키가 MAP에 적합하지 않는 형태의 경우 (임의의 옵션)
NullPointerException - 키가 null 때에, MAP가 null 키를 허가하지 않는 경우 (임의의 옵션)

containsValue

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

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

get

public Object  get(Object  key)
MAP가 지정의 키를 MAP 하는 값을 돌려줍니다. MAP가 이 키의 매핑을 보관 유지하고 있지 않는 경우는 null 를 돌려줍니다. 반환값의 null 는 MAP가 키의 매핑을 보관 유지하고 있지 않는 것을 나타낸다고는인가 선. 즉, MAP가 명시적으로 키를 null 에 MAP 하는 일도 있습니다. containsKey 오퍼레이션을 사용하면(자), 이러한 2 개의 경우를 분별할 수가 있습니다.

즉, MAP에 (key==null ? k==null : key.equals(k)) 라고 하는 조건으로, 키 k 로부터 값 v 까지 매핑이 포함되는 경우, 이 메소드는 v 를 돌려줍니다. 포함되지 않는 경우는 null 를 돌려줍니다. 이러한 매핑이 1 개만 있습니다.

파라미터:
key - 관련지을 수 있었던 값이 돌려주어지는 키
반환값:
MAP가, 지정된 키에 매핑 하고 있는 값. 이 키에 대한 매핑이 MAP에 없는 경우는 null
예외:
ClassCastException - 키가 MAP에 적합하지 않는 형태의 경우 (임의의 옵션)
NullPointerException - 키가 null 때에, MAP가 null 키를 허가하지 않는 경우 (임의의 옵션)
관련 항목:
containsKey(Object)

put

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

파라미터:
key - 지정되는 값을 관련지을 수 있는 키
value - 지정되는 키에 관련지을 수 있는 값
반환값:
지정된 키에 관련한 이전의 값. key 에 매핑이 없었던 경우는 null. 또,null 의 반환값은 구현이 null 치를 서포트하고 있는 경우는 지정된 키에 이전 MAP가 null 를 관련짓고 있던 것을 나타내는 경우도 있다
예외:
UnsupportedOperationException - put 오퍼레이션이 MAP에 의해 서포트되어 있지 않은 경우
ClassCastException - 지정된 키 또는 값의 클래스가 원인으로, MAP에 저장할 수 없는 경우
IllegalArgumentException - 이 키 또는 값의 특성이 원인으로, MAP에 저장할 수 없는 경우
NullPointerException - MAP가 null 키나 null 치를 허가하지 않을 때에, 지정된 키 또는 값이 null 의 경우

remove

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

키를 이전 관련짓고 있던 MAP의 값을 돌려줍니다. 이 키의 매핑이 MAP에 없는 경우는 null 를 돌려줍니다(null 의 반환값은 구현이 null 치를 서포트하고 있는 경우, MAP가 지정된 키와 null 를 이전 관련짓고 있던 것을 나타내는 경우도 있다). 1 번 호출이 돌아가면, MAP는 지정된 키의 매핑을 포함하지 않습니다.

파라미터:
key - 매핑이 MAP로부터 삭제되는 키
반환값:
지정된 키와 관련지을 수 있고 있던 이전의 값. 키의 매핑이 없었던 경우는 null
예외:
ClassCastException - 키가 MAP에 적합하지 않는 형태의 경우 (임의의 옵션)
NullPointerException - 키가 null 때에, MAP가 null 키를 허가하지 않는 경우 (임의의 옵션)
UnsupportedOperationException - MAP가 remove 메소드를 서포트하고 있지 않는 경우

putAll

public void putAll(Map  t)
지정된 MAP의 모든 매핑을 이 MAP에 카피합니다 (임의의 오퍼레이션). 지정된 MAP의 키 k 로부터 값 v 까지의 각 매핑에 관해서, 이 호출의 효과는 MAP로 put(k, v) 를 호출했을 경우와 같습니다. 지정된 MAP가 이 오퍼레이션의 처리중으로 변경되었을 경우, 그 오퍼레이션의 동작은 지정외가 됩니다.

파라미터:
t - MAP에 저장되는 매핑
예외:
UnsupportedOperationException - MAP가 putAll 메소드를 서포트하고 있지 않는 경우
ClassCastException - 지정된 MAP내의 키 또는 값의 클래스가 원인으로, MAP에 저장할 수 없는 경우
IllegalArgumentException - 지정된 MAP내의 키 또는 값의 특성이 원인으로, MAP에 저장할 수 없는 경우
NullPointerException - 지정된 MAP가 null 인지 또는 이 MAP가 null 키나 null 치를 허가하지 않고 지정된 MAP에 null 키나 null 치가 포함되지 않는 경우

clear

public void clear()
MAP로부터 매핑을 모두 삭제합니다 (임의의 오퍼레이션).

예외:
UnsupportedOperationException - clear 가 MAP에 의해 서포트되어 있지 않은 경우

keySet

public Set  keySet()
MAP에 포함되어 있는 키의 셋트뷰를 돌려줍니다. 세트는 MAP와 연동하고 있으므로, MAP에 대한 변경은 세트에 반영되어 또, 세트에 대한 변경은 MAP에 반영됩니다. 세트에 대한 반복의 처리중으로 MAP가 변경되었을 경우는 반복의 결과는 프로텍션되지 않습니다. 세트는 Iterator.remove,Set.remove,removeAll,retainAll, 및 clear 의 각 오퍼레이션을 사용해 MAP로부터 대응하는 매핑을 삭제하는 요소 삭제 처리를 서포트합니다. add 오퍼레이션과 addAll 오퍼레이션은 세트에서는 서포트되고 있지 않습니다.

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

values

public Collection  values()
MAP에 포함되어 있는 값의 코레크션뷰를 돌려줍니다. 콜렉션은 MAP와 연동하고 있으므로, MAP에 대한 변경은 콜렉션에 반영되어 또, 콜렉션에 대한 변경은 MAP에 반영됩니다. 콜렉션에 대한 반복의 처리중으로 MAP가 변경되었을 경우, 반복의 결과는 프로텍션되지 않습니다. 콜렉션은 Iterator.remove,Collection.remove,removeAll,retainAll, 및 clear 의 각 오퍼레이션을 사용해 MAP로부터 대응하는 매핑을 삭제하는 요소 삭제 처리를 서포트합니다. add 오퍼레이션과 addAll 오퍼레이션은 콜렉션에서는 서포트되고 있지 않습니다.

반환값:
MAP내에 보관 유지되고 있는 값의 코레크션뷰

entrySet

public Set  entrySet()
MAP에 포함되어 있는 매핑의 셋트뷰를 돌려줍니다. 돌려주어지는 세트내의 각 요소는입니다. 세트는 MAP와 연동하고 있으므로, MAP에 대한 변경은 세트에 반영되어 또, 세트에 대한 변경은 MAP에 반영됩니다. 세트에 대한 반복의 처리중으로 MAP가 변경되었을 경우는 반복의 결과는 프로텍션되지 않습니다. 세트는 Iterator.remove,Set.remove,removeAll,retainAll, 및 clear 의 각 오퍼레이션을 사용해 MAP로부터 대응하는 매핑을 삭제하는 요소 삭제 처리를 서포트합니다. add 오퍼레이션과 addAll 오퍼레이션은 세트에서는 서포트되고 있지 않습니다.

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

equals

public boolean equals(Object  o)
지정된 오브젝트가 이 MAP와 동일한지 어떤지를 비교합니다. 지정된 오브젝트도 MAP이며, 2 개의 Map 가 같은 매핑을 나타내고 있는 경우는 true 를 돌려줍니다. 즉,t1.entrySet(). equals(t2.entrySet()) 인 경우, 2 개의 MAP t1t2 는 같은 매핑을 나타냅니다. 이것에 의해,Map 인터페이스의 구현이 다른 경우에서도,equals 메소드가 올바르게 동작하는 것이 프로텍션됩니다.

오버라이드(override):
클래스 Object 내의 equals
파라미터:
o - MAP와 동일한지 어떤지를 비교하는 오브젝트
반환값:
지정된 오브젝트가 MAP와 동일한 경우는 true

hashCode

public int hashCode()
MAP의 해시 코드치를 돌려줍니다. MAP의 해시 코드는 MAP의 entrySet 뷰내의 각 엔트리의 hashCode 의 합계가 되도록(듯이) 정의됩니다. 이것에 의해, Object.hashCode 의 일반 규약에 의해 요구되도록(듯이), 임의의 2 개의 MAP t1t2t1.equals(t2) 이면,t1.hashCode() ==t2.hashCode() 가 되는 것이 프로텍션됩니다.

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

JavaTM 2
Platform
Std.  Ed.  v1. 4.0

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

Java, Java 2 D, 및 JDBC 는 미국 및 그 외의 나라에 있어서의 미국 Sun Microsystems, Inc. 의 상표 혹은 등록상표입니다.
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.