가자미의 개발이야기
자바 컬렉션 프레임워크 Map<K,V> : HashMap 본문
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();
}
}
|
트리맵은 저장할때 정렬해서 저장한다는 점이 다르네요~
'Java > 자바 기본 문법' 카테고리의 다른 글
자바 열거형 (0) | 2021.02.03 |
---|---|
자바 컬렉션 기반 알고리즘 (0) | 2021.02.03 |
자바 컬렉션 프레임워크 Set<E> : HashSet, TreeSet (0) | 2021.02.02 |
자바 컬렉션 프레임워크-List<E> : ArrayList, LinkedList, Stack, Queue (0) | 2021.02.02 |
[Java] 자바 와일드카드 (0) | 2021.01.22 |