설명
Map인터페이스에 속해있는 컬렉션으로, 데이터들은 모두 (키, 값)의 1:1 구조로 저장된다.
- 키는 중복 불가
- 같은 키의 값을 삽입하려고하면 해당 키의 값이 변경
ex) ('A', 10)을 넣은 후 ('A', 5)를 넣는다면 키는 중복 불가하기 때문에 A의 값이 10에서 5로 변경되어 저장된다.
HashMap 선언
HashMap<Type, Type> hm = new HashMap<Type, Type>();
Type 위치에 Character, Integer, String 등을 넣어 사용할 수 있다.
ex)
주요 메소드
- put() : 값 추가
- remove() : 값 삭제
- clear() : 모든 키 값 삭제
- size() : 크기 구하기
- containsKey() : 키 값을 가지고 있는지 확인. 가지고 있다면 true, 없다면 false 반환
- keySet() : 저장된 키 값 확인 -> 전체 출력
- get() : 값 출력
- entrySet() : 저장된 key와 value 값 확인 -> 전체 출력
- getOrDefault() : key가 존재한다면 찾는 key의 value를 반환하고 없거나 null이면 default 값을 반환
예시
put() - HashMap 값 추가
import java.util.HashMap;
public class example {
public static void main(String[] args) {
HashMap<Character, Integer> hm = new HashMap<Character, Integer>(); // HashMap 선언
hm.put('A', 1);
hm.put('B', 2);
hm.put('C', 3);
System.out.println(hm);
}
}
결과
remove(), clear() - HashMap 값 삭제
import java.util.HashMap;
public class example {
public static void main(String[] args) {
HashMap<Character, Integer> hm = new HashMap<Character, Integer>(); // HashMap 선언
hm.put('A', 1);
hm.put('B', 2);
hm.put('C', 3);
System.out.println(hm);
hm.remove('C');
System.out.println(hm);
System.out.println(hm.remove('B')); // remove()는 value를 리턴
hm.clear();
System.out.println(hm);
}
}
결과
size() - HashMap 크기 구하기
import java.util.HashMap;
public class example {
public static void main(String[] args) {
HashMap<Character, Integer> hm = new HashMap<Character, Integer>(); // HashMap 선언
hm.put('A', 1);
hm.put('B', 2);
hm.put('C', 3);
System.out.println(hm);
System.out.println("size : " + hm.size());
hm.remove('C');
System.out.println(hm);
System.out.println("size : " + hm.size());
}
}
결과
containsKey() - HashMap 안에 key 있는지 없는지 확인
import java.util.HashMap;
import java.util.Map;
public class example {
public static void main(String[] args) {
HashMap<Character, Integer> hm = new HashMap<Character, Integer>(); // HashMap 선언
hm.put('A', 1);
hm.put('B', 2);
hm.put('C', 3);
System.out.println(hm.containsKey('A'));
System.out.println(hm.containsKey('D'));
}
}
get(), keySet() - HashMap 값 출력
import java.util.HashMap;
public class example {
public static void main(String[] args) {
HashMap<Character, Integer> hm = new HashMap<Character, Integer>(); // HashMap 선언
hm.put('A', 1);
hm.put('B', 2);
System.out.println(hm.get('A'));
System.out.println(hm.get('B'));
for(char x : hm.keySet()) {
System.out.println("[Key]:" + x + " [Value]:" + hm.get(x));
}
}
}
결과
entrySet() - HashMap 전체 출력
import java.util.HashMap;
import java.util.Map;
public class example {
public static void main(String[] args) {
HashMap<Character, Integer> hm = new HashMap<Character, Integer>(); // HashMap 선언
hm.put('A', 1);
hm.put('B', 2);
hm.put('C', 3);
for (Map.Entry<Character, Integer> entry : hm.entrySet()) {
System.out.println("[Key]:" + entry.getKey() + " [Value]:" + entry.getValue());
}
}
}
Map으로의 마이그레이션이 필요하다.
결과
getOrDefault() - key 존재 유무에 따라 value를 반환하거나 default 값을 반환
HashMap을 사용해서 푸는 코딩 테스트에서 중요하니 꼭 알아두자 !
아래 코드는 HashMap과 getOrDefault()를 이용해 배열에 있는 문자를 key에, key의 개수를 value에 넣는 코드이다.
import java.util.HashMap;
import java.util.Map;
public class example {
public static void main(String[] args) {
char[] arr = { 'A', 'C', 'B', 'A', 'C', 'C'};
HashMap<Character, Integer> hm = new HashMap<>();
for(char key : arr) {
hm.put(key, hm.getOrDefault(key, 0) + 1);
}
System.out.println("출력 결과 : " + hm);
}
}
결과
'Language > JAVA' 카테고리의 다른 글
[JAVA] 자바 이진트리 순회 DFS(전위순회, 중위순회, 후위순회) (0) | 2023.03.13 |
---|---|
[JAVA] 자바 2차원 배열 정렬 Comparator (compare(), compareTo() 재정의) (0) | 2023.02.23 |
[JAVA] Array sort, ArrayList sort (배열 정렬, ArrayList sort 정렬) (0) | 2022.12.14 |
[JAVA] 배열 합치기 (0) | 2022.12.13 |
[JAVA] 진법 변환 정리 (0) | 2022.11.06 |