|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요 : 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
K
- 이 맵이 보관 유지하는 키의 형태V
- 맵 되는 값의 형태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 를 호출하면(자), 키 k 로 key.equals(k) 가 불려 간다」라고 이해해야 하지는 않습니다. 구현은, 최초로 2 개의 키의 해시 코드를 비교하는 등,equals 호출을 회피하기 위한 최적화를 자유롭게 구현할 수 있습니다. (Object.hashCode()
스펙에서는, 등가가 아닌 해시 코드를 보관 유지하는 2 개의 객체는 등가가 아닌 것이 보증됩니다). 일반적으로, 다양한 Collections Framework 인터페이스의 구현으로, 구현자가 적절이라고 판단한다면, 기반이 되는 Object
메소드의 지정된 동작을 자유롭게 이용할 수 있습니다.
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 뷰를 돌려줍니다. |
메소드의 상세 |
---|
int size()
boolean isEmpty()
boolean containsKey(Object key)
key
- 맵에 있을지 어떨지가 판정되는 키
ClassCastException
- 키가 맵에 적합하지 않는 형태의 경우 (생략 가능)
NullPointerException
- 지정된 키가 null 이며, 이 맵이 null 키를 허가하지 않는 경우 (생략 가능)boolean containsValue(Object value)
value
- 맵에 있을지 어떨지를 판정되는 값
ClassCastException
- 치가 맵에 적합하지 않는 형태의 경우 (생략 가능)
NullPointerException
- 지정된 값이 null 이며, 이 맵이 null 치를 허가하지 않는 경우 (생략 가능)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 키를 허가하지 않는 경우 (생략 가능)V put(K key, V value)
m.containsKey(k)
가 true 를 돌려주는 경우에 한정해, 맵 m 는, 키 k 의 매핑을 포함한다고 말할 수 있습니다.
key
- 지정된 값을 관련지을 수 있는 키value
- 지정된 키에 관련지을 수 있는 값
UnsupportedOperationException
- put 오퍼레이션이 이 맵으로 지원되지 않는 경우
ClassCastException
- 지정된 키 또는 값의 클래스가 원인으로, 이 맵에 그것들을 포함할 수 없는 경우
NullPointerException
- 지정된 키 또는 값이 null 이며, 이 맵이 null 의 키 또는 값을 허가하지 않는 경우
IllegalArgumentException
- 지정된 키 또는 값이 있는 프로퍼티이 원인으로, 이 맵에 그것들을 포함할 수 없는 경우V remove(Object key)
이 맵이 이전에 이 키를 관련짓고 있던 값을 돌려줍니다. 키에 대한 매핑이 맵에 없었던 경우는 null 를 돌려줍니다.
이 맵이 null 치를 허가하는 경우, 반환값의 null 는, 맵이 키의 매핑을 보관 유지하고 있지 않았던 것을 나타낸다고는인가 선. 즉, 맵이 명시적으로 키를 null 에 맵 하고 있던 가능성도 있습니다.
한 번 호출이 돌아가면, 맵은 지정된 키의 매핑을 포함하지 않습니다.
key
- 매핑이 맵으로부터 삭제되는 키
UnsupportedOperationException
- remove 오퍼레이션이 이 맵으로 지원되지 않는 경우
ClassCastException
- 키가 맵에 적합하지 않는 형태의 경우 (생략 가능)
NullPointerException
- 지정된 키가 null 이며, 이 맵이 null 키를 허가하지 않는 경우 (생략 가능)void putAll(Map <? extends K ,? extends V > m)
put(k, v)
를 호출했을 경우와 같습니다. 오퍼레이션의 진행중에, 지정된 맵이 변경되었을 경우의, 이 오퍼레이션의 동작은 정의되고 있지 않습니다.
m
- 맵에 포함되는 매핑
UnsupportedOperationException
- putAll 오퍼레이션이 이 맵으로 지원되지 않는 경우
ClassCastException
- 지정된 맵내의 키 또는 값의 클래스가 원인으로, 맵에 포함할 수 없는 경우
NullPointerException
- 지정된 맵이 null 인 경우, 또는 이 맵이 null 의 키 또는 값을 허가하지 않고, 지정된 맵에 null 의 키 또는 값이 포함되어 있는 경우
IllegalArgumentException
- 지정된 맵내가 있는 키 또는 값이 있는 프로퍼티이 원인으로, 맵에 포함할 수 없는 경우void clear()
UnsupportedOperationException
- clear 오퍼레이션이 이 맵으로 지원되지 않는 경우Set <K > keySet()
Set
뷰를 돌려줍니다. 세트는 맵과 연동하고 있으므로, 맵에 대한 변경은 세트에 반영되어 또, 세트에 대한 변경은 맵에 반영됩니다. 세트의 반복 처리중으로 맵이 변경되었을 경우, 반복 처리의 결과는 정의되지 않습니다 (반복자 자신의 remove 오퍼레이션을 제외하다). 삭제는,Iterator.remove,Set.remove,removeAll,retainAll, 및 clear 의 각 오퍼레이션을 통해 실시합니다. Set 는,add 오퍼레이션이나 addAll 오퍼레이션은 지원하고 있습니다.
Collection <V > values()
Collection
뷰를 돌려줍니다. 컬렉션은 맵과 연동하고 있으므로, 맵에 대한 변경은 컬렉션에 반영되어 또 컬렉션에 대한 변경은 맵에 반영됩니다. 컬렉션의 반복 처리중으로 맵이 변경되었을 경우, 반복 처리의 결과는 정의되지 않습니다 (반복자 자신의 remove 오퍼레이션을 제외하다). 컬렉션은 요소의 삭제를 지원하고 있어, 대응하는 매핑을 맵으로부터 삭제할 수 있습니다. 삭제는,Iterator.remove,Collection.remove,removeAll,retainAll, 및 clear 오퍼레이션을 통해 실시합니다. Set 는,add 오퍼레이션이나 addAll 오퍼레이션은 지원하고 있습니다.
Set <Map.Entry <K ,V >> entrySet()
Set
뷰를 돌려줍니다. 세트는 맵과 연동하고 있으므로, 맵에 대한 변경은 세트에 반영되어 또, 세트에 대한 변경은 맵에 반영됩니다. 세트에 대한 반복의 처리중으로 맵이 변경되었을 경우는, 반복 처리의 결과는 정의되지 않습니다 (반복자 자신의 remove 오퍼레이션, 또는 반복자에 의해 반환되는 맵 엔트리에 대한 setValue 오퍼레이션을 제외하다). 세트는, 요소의 삭제를 지원하고 있어, 대응하는 매핑을 맵으로부터 삭제할 수 있습니다. 삭제는,Iterator.remove,Set.remove,removeAll,retainAll, 및 clear 의 각 오퍼레이션을 통해 실시합니다. Set 는,add 오퍼레이션이나 addAll 오퍼레이션은 지원하고 있습니다.
boolean equals(Object o)
Object
내의 equals
o
- 이 맵과 동일한지 어떤지를 비교하는 객체
Object.hashCode()
,
Hashtable
int hashCode()
Object.hashCode()
의 일반 규약으로 요구되는 대로, 임의의 2 개세트 m1 와 m2 에 대해,m1.equals(m2) 의 경우 m1.hashCode() ==m2.hashCode() 가 됩니다.
Object
내의 hashCode
Map.Entry.hashCode()
,
Object.equals(Object)
,
equals(Object)
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요 : 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.