가자미의 개발이야기

자바 컬렉션 프레임워크 Map<K,V> : HashMap 본문

Java/자바 기본 문법

자바 컬렉션 프레임워크 Map<K,V> : HashMap

가자미 2021. 2. 2. 16:10

a. Map<K,V>

iterator 인터페이스를 구현하지 않음, 따라서 반복자를 활용하지 않음

하지만 Key는 Set<E>로 구현되어 있어서 반복자를 얻어올 수 있다!!

즉 Key의 반복자로 접근해서 활용가능

 

Collection메소드는 중복되어 제외.

메서드 설명
boolean containsKey(Object key) key 객체와 일치하는 키값이 있으면 참
boolean containsValue(Object value) value 객체와 일치하는 밸류값이 있으면 참
Set entrySet() key value타입 Map을 entry 타입의 객체로 저장한 Set반환
Set keySet() 저장된 키들을 Set으로 반환
void putAll(Map t) t의 모든 key value객체를 추가한다
Collection values() 모든 밸류객체를 반환한다.

b. HashMap

해싱을 사용해서 많은 양의 데이터를 검색하는데 높은 성능.

KEY와 VALUE가 쌍을 이뤄 저장. KEY는 중복되어서는 안됨

HashMap() 해쉬맵 객체생성
HashMap(int initialCapacity) 초기 용량을 가진 해쉬맵 객체 생성
HashMap(int initialCapacity, float loadFactor) 초기 용량과 load factor의 해쉬맵 생성
HashMap(Map m) map의 모든 요소를 포함하는 해쉬맵 생성

메소드 (Collection 메소드와 Map 메소드는 제외)

메소드 내용
Object replace(Object key, Object value) 키값의 밸류를 value로 변경
boolean replace(Object key, Object oldVal, Object newVal) 키값과 밸류가 일치할 경우 새로운 밸류로 바꿈

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.HashMap;
import java.util.ArrayDeque;
 
public class Num {
    public static void main(String[] args) {
        HashMap<Integer, String> map = new HashMap<>();
        
        map.put(45"Brown");
        map.put(35"James");
        map.put(23"Martin");
        
        System.out.println("23번"+ map.get(23));
        System.out.println("35번" + map.get(35));
        System.out.println("23번"+map.get(23));
        
        map.remove(23);
        
        System.out.println(map.get(23));
    }
}
 

-Map의 순차적 접근

--public Set<K> keySet()  iterator를 구현했음

1,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
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class Num {
    public static void main(String[] args) {
        HashMap<Integer, String> map = new HashMap<>();
        
        map.put(45"Brown");
        map.put(35"James");
        map.put(23"Martin");
        
        //key만 담고 있는 콜렉션 인스턴스 생성
        Set<Integer> ks = map.keySet();
        
        for(Integer n : ks)//전체 key출력
            System.out.print(n.toString()+'\t');
        System.out.println();
        
        for(Integer n : ks)//전체 value 출력
            System.out.print(map.get(n).toString()+'\t');
        System.out.println();
        
        for(Iterator<Integer> itr = ks.iterator(); itr.hasNext();)
            System.out.print(map.get(itr.next())+'\t');
        System.out.println();
    }
}
ㅇㄹㅇㄻ

TreeMap

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
import java.util.TreeMap;
import java.util.Iterator;
import java.util.Set;
public class Num {
    public static void main(String[] args) {
        TreeMap<Integer, String> map = new TreeMap<>();
        
        map.put(45"Brown");
        map.put(35"James");
        map.put(23"Martin");
        
        //key만 담고 있는 콜렉션 인스턴스 생성
        Set<Integer> ks = map.keySet();
        
        for(Integer n : ks)//전체 key출력
            System.out.print(n.toString()+'\t');
        System.out.println();
        
        for(Integer n : ks)//전체 value 출력
            System.out.print(map.get(n).toString()+'\t');
        System.out.println();
        
        for(Iterator<Integer> itr = ks.iterator(); itr.hasNext();)
            System.out.print(map.get(itr.next())+'\t');
        System.out.println();
    }
}
 

트리맵은 저장할때 정렬해서 저장한다는 점이 다르네요~