JAVA Map 구조 와 API 소개

8185 단어 JAVAMap
우선 지도 구 조 를 살 펴 보 자위의 그림 과 같이 Map 은 매 핑 인터페이스 이 고 Map 에 저 장 된 내용 은 키 쌍(key-value)입 니 다.AbstractMap 은 Map 에 계승 되 는 추상 류 로 Map 의 대부분 API 를 실현 했다.다른 맵 의 실현 류 는 AbstractMap 을 계승 하여 중복 인 코딩 을 줄 일 수 있 습 니 다.Sorted Map 은 Map 에 계승 되 는 인터페이스 입 니 다.SortedMap 의 내용 은 정렬 된 키 쌍 이 고 정렬 방법 은 비교 기(Comparator)를 통 해 이 루어 집 니 다.NavigableMap 은 SortedMap 에 계승 되 는 인터페이스 입 니 다.Sorted Map 에 비해 NavigableMap 은 일련의 네 비게 이 션 방법 이 있 습 니 다.예 를 들 어'대상 보다 크 거나 같은 키 쌍 가 져 오기','대상 보다 작 거나 같은 키 쌍 가 져 오기'등 이다.TreeMap 은 AbstractMap 에 계승 되 고 NavigableMap 인 터 페 이 스 를 실현 합 니 다.따라서 트 리 맵 의 내용 은'질서 있 는 키 쌍'입 니 다!HashMap 은 AbstractMap 에 계승 되 었 으 나 NavigableMap 인 터 페 이 스 를 실현 하지 못 했 습 니 다.따라서 HashMap 의 내용 은"키 값 은 맞 지만 순 서 는 보장 되 지 않 습 니 다"입 니 다!Hashtable 은 AbstractMap 에 계승 되 는 것 은 아니 지만 Dictionary(Dictionary 도 키 가 맞 는 인터페이스)에 계승 되 고 Map 인터페이스 도 실현 합 니 다.따라서 Hashtable 의 내용 도'키 가 맞 고 순서 도 보장 되 지 않 는 다'는 것 이다.그러나 HashMap 에 비해 Hashtable 은 스 레 드 가 안전 하고 Enumeration 을 통 해 옮 겨 다 니 는 것 을 지원 합 니 다.Weak HashMap 은 AbstractMap 에 계승 되 었 습 니 다.이것 은 HashMap 의 키 형식 과 달리 Weak HashMap 의 키 는'약 한 키'입 니 다.위의 전체적인 틀 이 생 긴 후에 우 리 는 먼저 각 인터페이스 와 추상 류 의 소 개 를 살 펴 보 자.뒤에 각 실현 류 에 대해 상세 하 게 설명 하 겠 습 니 다.1.MapMap 의 정 의 는 다음 과 같다.맵 맵 에 중복 되 는 키 를 포함 할 수 없습니다.모든 키 는 최대 한 값 만 표시 할 수 있 습 니 다.Map 인 터 페 이 스 는 세 가지 collection 보 기 를 제공 합 니 다.키 집합,값 집합 또는 키-값 맵 관계 집합 형식 으로 맵 의 내용 을 볼 수 있 습 니 다.맵 매 핑 순서.어떤 실현 류 는 그 순 서 를 명확 하 게 보장 할 수 있다.예 를 들 어 TreeMap;다른 맵 은 HashMap 류 와 같은 순 서 를 보장 하지 않 습 니 다.Map 의 실현 류 는 2 개의'표준 적 인'구조 방법 을 제공 해 야 합 니 다.첫 번 째,void(매개 변수 없 음)구조 방법 은 빈 맵 을 만 드 는 데 사 용 됩 니 다.두 번 째,하나의 맵 형식 매개 변 수 를 가 진 구조 방법 은 매개 변수 와 같은 키-값 맵 관 계 를 가 진 새로운 맵 을 만 드 는 데 사 용 됩 니 다.실제로 다음 구조 방법 은 사용자 가 임의의 맵 을 복사 하여 필요 한 클래스 의 등가 맵 을 생 성 할 수 있 도록 합 니 다.이 제안 을 강제로 실행 할 수 는 없 지만(인터페이스 에 구조 방법 이 포함 되 어 있 지 않 기 때문에)JDK 의 모든 일반적인 맵 은 이 를 따 릅 니 다.Map 의 API

public interface Map<K,V> { }
설명:(01)Map 은 인 터 페 이 스 를 제공 하여 각각 키 집합,값 집합 또는 키-값 맵 관계 집합 을 되 돌려 줍 니 다.        entry Set()반환 키-값 집합 에 사용 되 는 set 집합        keyset()키 집합 을 되 돌려 주 는 set 집합       values()사용자 반환 값 집합의 Collection 집합       맵 에 중복 되 는 키 가 포함 되 어 있 지 않 기 때 문 입 니 다.모든 키 는 최대 한 값 만 표시 할 수 있 습 니 다.그래서 키-값 집합,키 집합 은 모두 Set,값 집합 시 Collection 입 니 다.(02)맵 은'키-값 쌍','키 에 따라 값 을 얻는다','삭제 키','용량 크기 를 얻는다'등의 방법 을 제공한다.
2.Map.Entry Map.Entry 의 정 의 는 다음 과 같다.Map.Entry 의 API

abstract void                 clear()
abstract boolean              containsKey(Object key)
abstract boolean              containsValue(Object value)
abstract Set<Entry<K, V>>     entrySet()
abstract boolean              equals(Object object)
abstract V                    get(Object key)
abstract int                  hashCode()
abstract boolean              isEmpty()
abstract Set<K>               keySet()
abstract V                    put(K key, V value)
abstract void                 putAll(Map<? extends K, ? extends V> map)
abstract V                    remove(Object key)
abstract int                  size()
abstract Collection<V>        values()
AbstractMapAbstractMap 의 정 의 는 다음 과 같다

interface Entry<K,V> { }
AbstractMap 류 는 Map 인터페이스의 골간 실현 을 제공 하여 이 인 터 페 이 스 를 실현 하 는 데 필요 한 작업 을 최대한 줄인다.수정 할 수 없 는 맵 을 실현 하려 면 프로그래머 가 이 를 확장 하고 entry Set 방법 을 제공 하면 됩 니 다.이 방법 은 맵 의 맵 관계 set 보 기 를 되 돌려 줍 니 다.보통 되 돌아 오 는 set 는 AbstractSet 에서 순서대로 이 루어 집 니 다.이 set 는 add()나 reove()방법 을 지원 하지 않 으 며,교체 기 는 reove()방법 도 지원 하지 않 습 니 다.수정 가능 한 맵 을 실현 하려 면 프로그래머 가 이러한 put 방법 을 따로 다시 써 야 합 니 다(그렇지 않 으 면 Unsupported Operation Exception 을 던 집 니 다).entry Set().iterator()가 돌아 오 는 교체 기 도 reove 방법 을 따로 실현 해 야 합 니 다.AbstractMap 의 API

abstract boolean     equals(Object object)
abstract K             getKey()
abstract V             getValue()
abstract int         hashCode()
abstract V             setValue(V object)
 
4 Sorted MapSorted Map 의 정 의 는 다음 과 같다

public abstract class AbstractMap<K,V> implements Map<K,V> {}
Sorted Map 은 Map 인터페이스 에 계승 되 는 인터페이스 이다.그것 은 질서 있 는 SortedMap 키 맵 입 니 다.SortedMap 의 정렬 방식 은 두 가지 가 있 습 니 다.자연 정렬 이나 사용자 지정 비교 기 입 니 다.질서 있 는 SortedMap 을 삽입 하 는 모든 요 소 는 Comparable 인터페이스(또는 지 정 된 비교 기 가 받 아들 여야 합 니 다)를 실현 해 야 합 니 다.또한 모든 SortedMap 구현 클래스 는 4 개의'표준'구조 방법 을 제공 해 야 합 니 다.(01)void(매개 변수 없 음)구조 방법 은 빈 질서 있 는 맵 을 만 들 고 키 의 자연 순서에 따라 정렬 합 니 다.(02)Comparator 형식의 매개 변 수 를 가 진 구조 방법 으로 빈 질서 있 는 맵 을 만 들 고 지정 한 비교 기 에 따라 정렬 합 니 다.(03)맵 형식의 매개 변 수 를 가 진 구조 방법 으로 새로운 질서 있 는 맵 을 만 듭 니 다.키-값 맵 관 계 는 매개 변수 와 같 고 키 의 자연 순서에 따라 정렬 합 니 다.(04)SortedMap 형식의 매개 변 수 를 가 진 구조 방법 으로 새로운 질서 있 는 맵 을 만 듭 니 다.키-값 맵 관계 와 정렬 방법 은 입력 한 질서 있 는 맵 과 같 습 니 다.인터페이스 에 구조 적 방법 이 포함 되 어 있 지 않 기 때문에 이 제안 을 강제 적 으로 실시 할 수 는 없다.SortedMap 의 API

abstract Set<Entry<K, V>>     entrySet()
         void                 clear()
         boolean              containsKey(Object key)
         boolean              containsValue(Object value)
         boolean              equals(Object object)
         V                    get(Object key)
         int                  hashCode()
         boolean              isEmpty()
         Set<K>               keySet()
         V                    put(K key, V value)
         void                 putAll(Map<? extends K, ? extends V> map)
         V                    remove(Object key)
         int                  size()
         String               toString()
         Collection<V>        values()
         Object               clone()
5 NavigableMapNavigableMap 의 정 의 는 다음 과 같다.Public interface NavigableMapextends SortedMap{}NavigableMap 은 SortedMap 에 계승 되 는 인터페이스 이다.이것 은 내 비게 이 션 가능 한 키-값 대 집합 으로 주어진 검색 목표 보고 에 가장 가 까 운 내 비게 이 션 방법 을 가지 고 있 습 니 다.NavigableMap 은 각각'키','키-값 대','키 집합','키-값 대 집합'을 가 져 오 는 방법 을 제공한다.NavigableMap 의 API

public interface SortedMap<K,V> extends Map<K,V> { }
설명:NavigableMap 은 SortedMap 의 특성 을 계승 하 는 것 을 제외 하고 제공 하 는 기능 은 4 가지 로 나 눌 수 있 습 니 다.첫 번 째 유형 은 조작 키-값 이 맞 는 방법 을 제공 합 니 다.               lowerEntry,floor Entry,ceilingEntry 와 higherEntry 방법 은 각각 작 거나 작 거나 같 거나 같 거나 같 거나 주어진 키 보다 큰 키 와 연 결 된 Map.Entry 대상 을 되 돌려 줍 니 다.               firstEntry,poll First Entry,lastEntry 와 pollLastEntry 방법 은 최소 와 최대 의 맵 관 계 를 되 돌려 주거 나 제거 하지 않 으 면 null 로 돌아 갑 니 다.두 번 째 유형,조작 키 를 제공 하 는 방법.이게 1 류 랑 비슷 해 요.               lowerKey,floorKey,ceilingKey 와 higherKey 방법 은 각각 작 거나 작 거나 같 거나 같 거나 주어진 키 보다 큰 키 를 되 돌려 줍 니 다.세 번 째 클래스,키 집합 가 져 오기.              navigableKeySet,descendingKeySet 는 각각 정렬/반전 키 집합 을 가 져 옵 니 다.네 번 째 클래스,키-값 이 맞 는 부분 집합 을 가 져 옵 니 다.
6 Dictionary Dictionary 의 정 의 는 다음 과 같다.Dictionary 의 API

// Map API
abstract void                 clear()
abstract boolean              containsKey(Object key)
abstract boolean              containsValue(Object value)
abstract Set<Entry<K, V>>     entrySet()
abstract boolean              equals(Object object)
abstract V                    get(Object key)
abstract int                  hashCode()
abstract boolean              isEmpty()
abstract Set<K>               keySet()
abstract V                    put(K key, V value)
abstract void                 putAll(Map<? extends K, ? extends V> map)
abstract V                    remove(Object key)
abstract int                  size()
abstract Collection<V>        values()
// SortedMap API
abstract Comparator<? super K>     comparator()
abstract K                         firstKey()
abstract SortedMap<K, V>           headMap(K endKey)
abstract K                         lastKey()
abstract SortedMap<K, V>           subMap(K startKey, K endKey)
abstract SortedMap<K, V>           tailMap(K startKey)

좋은 웹페이지 즐겨찾기