본문 바로가기

BackEnd/구 생활코딩 자바

Map<K,V> 인터페이스를 구현하는 컬렉션 클래스들

반응형

1. Map<K,V> 인터페이스를 구현하는 컬렉션 클래스들

 -  이 클래스들은 key와 value 방식의 데이터 저장을 한다.

 -  key 는 value를 찾는 열쇠를 의미하며 중복이 불가능하다

 -  value 는 저장할 데이터를 의미하고 중복이 가능하다

 -  value 요소의 저장 순서를 유지하지 않는다.

2. Map<K,V>를 구현하는 대표적인 클래스 2가지


1) HashMap<K,V>

HashMap 또한 해시 알고리즘을 기반으로 구현되어 있다.

따라서 매우 빠른 검색속도를 보인다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.util.HashMap;
import java.util.Iterator;
 
class a15_IntroHashMap
{
    public static void main(String[] args)
    {
        HashMap<Integer, String> hMap=new HashMap<Integer, String>();
 
        hMap.put(new Integer(3), "나삼번");        
        hMap.put(5"윤오번");    
        hMap.put(8"박팔번");    
        
        System.out.println("6학년 3반 8번 학생: "+hMap.get(new Integer(8)));
        System.out.println("6학년 3반 5번 학생: "+hMap.get(5));
        System.out.println("6학년 3반 3번 학생: "+hMap.get(3));
        
        hMap.remove(5);        /* 5번 학생 전학 감 */
        System.out.println("6학년 3반 5번 학생: "+hMap.get(5));    
        
        for (Integer key : hMap.keySet()) {
 
            System.out.println(String.format("키 : %s, 값 : %s", key, hMap.get(key)));
 
        }
        
        Iterator<Integer> keys = hMap.keySet().iterator();
 
        while (keys.hasNext()) {
 
            Integer key = keys.next();
 
            System.out.println(String.format("키 : %s, 값 : %s", key, hMap.get(key)));
 
        }
        
    }
}
cs

출력

1
2
3
4
5
6
7
8
6학년 3반 8번 학생: 박팔번
6학년 3반 5번 학생: 윤오번
6학년 3반 3번 학생: 나삼번
6학년 3반 5번 학생: null
키 : 3, 값 : 나삼번
키 : 8, 값 : 박팔번
키 : 3, 값 : 나삼번
키 : 8, 값 : 박팔번
cs


2) TreeMap<K,V>

트리 자료구조를 기반으로 구현이 되어 있어 데이터는 정렬된 상태로 저장이 된다.

정렬의 대상은 key이지 value가 아니다.

TreeMap 클래스는 키와 값을 한 쌍으로 하는 데이터를 이진 검색 트리(binary search tree)의 형태로 저장한다.

이진 검색 트리는 데이터를 추가하거나 제거하는 등의 기본 동작 시간이 매우 빠릅니다.

JDK 1.2부터 제공된 TreeMap 클래스는 NavigableMap 인터페이스를 기존의 이진 검색 트리의 성능을 향상시

킨 레드-블랙 트리(Red-Black tree)로 구현한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.TreeMap;
import java.util.Iterator;
import java.util.NavigableSet;
 
class a16_IntroTreeMap
{
    public static void main(String[] args)
    {
        TreeMap<Integer, String> tMap=new TreeMap<Integer, String>();
 
        tMap.put(1"data1");        
        tMap.put(3"data3");    
        tMap.put(5"data5");    
        tMap.put(2"data2");    
        tMap.put(4"data4");    
        
        NavigableSet<Integer> navi=tMap.navigableKeySet();
        //TreeMap안의 키들을 모두 가져오는것
        //NavigableSet자료형은 콜렉션 인터페이스 Set<E>를 구현하고있고 정렬 해준다.
        //이 navi라는 인스턴스안에 키들이 들어있다.
        
        System.out.println("오름차순 출력...");
        Iterator<Integer> itr=navi.iterator();//이 이터레이터가 정렬된값들을 오른차순으로 참조해줌
        while(itr.hasNext())
            System.out.println(tMap.get(itr.next()));
        
        System.out.println("내림차순 출력...");
        itr=navi.descendingIterator();//이 이터레이터가 내림차순으로 참조해줌
        while(itr.hasNext())
            System.out.println(tMap.get(itr.next()));    
    }
}
cs


출력

1
2
3
4
5
6
7
8
9
10
11
12
오름차순 출력...
data1
data2
data3
data4
data5
내림차순 출력...
data5
data4
data3
data2
data1
cs


https://soft.plusblog.co.kr/70


반응형