반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Button
- table
- html
- HashMap
- js
- 배열
- IntelliJ
- Array
- CMD
- Eclipse
- 이클립스
- map
- 이탈리아
- javascript
- 자바
- vscode
- 문자열
- date
- input
- string
- Java
- list
- ArrayList
- json
- 자바스크립트
- Visual Studio Code
- 정규식
- CSS
- replace
- 인텔리제이
Archives
- Today
- Total
어제 오늘 내일
[Java HashMap] 초기화 방법 총정리 본문
HashMap
은 자바에서 가장 자주 쓰이는 컬렉션 중 하나인데, 단순히 new HashMap<>()
만 쓰기보다는 상황에 맞는 다양한 초기화 방법이 있습니다. 이번 글에서는 초기 데이터와 함께 HashMap
을 만드는 여러 패턴을 소개합니다.
1. 기본 생성자
import java.util.HashMap;
public class HashMapInit1 {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<>();
map.put("kim", 90);
map.put("lee", 80);
System.out.println(map); // {kim=90, lee=80}
}
}
설명: 가장 일반적인 방법으로, 비어 있는 상태에서 put()
으로 데이터를 추가합니다.
2. 초기 용량(capacity) 지정
import java.util.HashMap;
public class HashMapInit2 {
public static void main(String[] args) {
// 예상 데이터 개수가 많을 경우 초기 용량을 지정해 리사이즈 비용 절감
HashMap<String, Integer> map = new HashMap<>(100);
map.put("kim", 90);
map.put("lee", 80);
System.out.println(map);
}
}
설명: 대량 데이터를 넣을 때는 초기 용량(capacity)을 지정하면 성능에 유리합니다.
3. 다른 Map으로부터 복사
import java.util.*;
public class HashMapInit3 {
public static void main(String[] args) {
Map<String, Integer> base = Map.of("kim", 90, "lee", 80);
HashMap<String, Integer> map = new HashMap<>(base);
System.out.println(map); // {kim=90, lee=80}
}
}
설명: 다른 Map을 생성자로 넘기면 해당 데이터를 복사한 새 HashMap
을 만들 수 있습니다.
4. 익명 초기화 블록 (구 Java 스타일)
import java.util.HashMap;
public class HashMapInit4 {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<>() {{
put("kim", 90);
put("lee", 80);
}};
System.out.println(map); // {kim=90, lee=80}
}
}
설명: 간단해 보이지만 내부적으로 익명 클래스가 생성되므로 메모리/성능 이슈가 있어 실무에선 권장되지 않습니다.
5. Java 8+ Stream
사용
import java.util.*;
import java.util.stream.*;
public class HashMapInit5 {
public static void main(String[] args) {
Map<String, Integer> map = Stream.of(
new AbstractMap.SimpleEntry<>("kim", 90),
new AbstractMap.SimpleEntry<>("lee", 80))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
System.out.println(map); // {kim=90, lee=80}
}
}
설명: 스트림을 활용하면 유연하게 데이터를 가공하여 HashMap
으로 초기화할 수 있습니다.
6. Java 9+ Map.of()
활용
import java.util.Map;
public class HashMapInit6 {
public static void main(String[] args) {
Map<String, Integer> map = Map.of(
"kim", 90,
"lee", 80,
"park", 95
);
System.out.println(map); // {kim=90, lee=80, park=95}
}
}
설명: Map.of()
는 불변 Map을 생성합니다. 수정이 필요하다면 new HashMap<>(Map.of(...))
로 감싸 사용하세요.
7. Collections.singletonMap()
import java.util.*;
public class HashMapInit7 {
public static void main(String[] args) {
Map<String, Integer> map = Collections.singletonMap("kim", 90);
System.out.println(map); // {kim=90}
}
}
설명: 요소가 1개뿐인 Map을 만들 때 유용합니다. 역시 불변이므로 수정이 필요하다면 새 HashMap
에 복사하세요.
결론
- 가장 기본은
new HashMap<>()
- 대량 데이터 예상 시 용량 지정
- 고정/불변 Map은
Map.of
,singletonMap
- 동적으로 초기화할 땐 Stream + Collectors 활용 가능
반응형
'IT > Java' 카테고리의 다른 글
[Java HashSet] 주요 메소드 정리 및 활용 예제 (0) | 2025.10.08 |
---|---|
[Java HashSet] 초기화 방법 총정리 (0) | 2025.10.07 |
[Java StringTokenizer] 주요 메소드 정리와 활용 예제 (0) | 2025.10.06 |
[Java Scanner] 주요 메소드 정리와 활용 예제 (0) | 2025.10.06 |
[Java Matcher] replaceAll() - 정규식으로 문자열 치환하기 (0) | 2025.10.05 |
Comments