https://rezerocodinglife.tistory.com/22
Start <명품JAVA> ArrayList
명품자바의 예제문제, 실습문제를 풀며 공부해 나갑니다. 목표는 Collection, Generic, Comparable, Comparator, Iterable, Iterator, Stream, Lambda Expression등을 공부하여 이를 활용한 몬테카를로 시뮬레이션 미니 프
rezerocodinglife.tistory.com
공부를 시작하며 작성한 글 입니다. 공부하며 사용한 자료들이 있으니 참고하시면 좋겠습니다.
<HashMap 문제>
- HashMap을 사용하여 (영어, 한글) 단어 쌍의 저장, 검색
조건 : (영어, 한글) 단어를 쌍으로 해시맵에 저장하고 영어로 한글을 검색하는 프로그램을 작성하라. "exit"이 입력되면 프로그램을 종료한다.
(명품 JAVA p.416)
package self_Generic;
import java.util.HashMap;
import java.util.Scanner;
public class Exercise7_5 {
private HashMap<String, String> storage;
private static final int STORAGE_SIZE = 2;
public void insertValueToStorage() {
Scanner sc = new Scanner(System.in);
this.storage = new HashMap<>();
for (int i = 0; i < STORAGE_SIZE; i++) {
System.out.print((i + 1) + "번째 Storage Key >> ");
String storageKey = sc.nextLine().trim();
while (storageKey.isEmpty()) {
System.out.println("입력값이 없습니다. 다시 입력하세요.");
System.out.print((i + 1) + "번째 Storage Key >> ");
storageKey = sc.nextLine().trim();
}
System.out.print((i + 1) + "번째 Storage Value >> ");
String storageValue = sc.nextLine().trim();
storage.put(storageKey, storageValue);
}
}
public void searchFromStorage() {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.print("찾고싶은 단어 >> ");
String searchKey = sc.next();
if (searchKey.equals("exit")) {
System.out.println("프로그램 종료...");
break;
}
String result = this.storage.get(searchKey);
if (result == null) {
System.out.println("등록되지 않은 단어 입니다.");
} else {
System.out.println(result);
}
}
sc.close();
}
public static void main(String[] args) {
Exercise7_5 user1 = new Exercise7_5();
user1.insertValueToStorage();
user1.searchFromStorage();
}
}
HashMap을 이용한 간단한 예제입니다. HashMap의 가장 큰 특징은 (key, value)라고 생각합니다. 알맞은 자료구조를 사용하는 것 역시 중요하다고 생각합니다. |
<HashMap의 장점>
- 키-값 쌍 저장: HashMap은 키-값 쌍을 저장하기에 데이터를 검색 및 업데이트할 때 효과적입니다.
- 빠른 검색 및 업데이트: 해시맵은 키를 사용하여 매우 빠르게 데이터를 검색하고 업데이트할 수 있습니다. 시간 복잡도는 O(1)입니다.
- 다양한 데이터 유형 지원: HashMap은 다양한 데이터 유형을 저장할 수 있으며, 키와 값 모두 객체로 저장할 수 있습니다.
<HashMap의 단점>
- 순서 없음: HashMap은 데이터의 순서를 유지하지 않으므로 데이터를 순서대로 처리해야 하는 경우에는 유용하지 않을 수 있습니다.
- 해시 충돌: 해시 함수가 충돌하면 성능 저하가 발생할 수 있으며, 충돌을 처리하려면 별도의 메커니즘을 구현해야 할 수 있습니다.
- 메모리 사용량: 해시맵은 해시 테이블을 사용하기 때문에 일정한 메모리를 소비합니다. 작은 데이터 집합의 경우에는 메모리 공간을 낭비할 수 있습니다.
'Backend' 카테고리의 다른 글
<Backend> Java / Generic 예제문제 2 (3) | 2023.11.08 |
---|---|
<Backend> Java / Generic 예제문제 (2) | 2023.11.07 |
<Backend> Java / Stack, Generic (3) | 2023.11.06 |
<Backend> Java / HashMap 응용 (2) | 2023.11.06 |
Start <명품JAVA> ArrayList (2) | 2023.11.06 |