20182267 홍태극
public class Main {
public static void main(String[] args) {
// 1. HashMap 생성
// 2. 기본 데이터 저장
// 3. 사용자 입력 처리
// 4. 검색 및 결과 출력
// 5. 프로그램 종료
}
}
import java.util.*;
public class Main {
public static void main(String[] args) {
// 프로그램 코드
}
}
java.util.* 임포트로 HashMap과 Scanner 사용 가능
// 영어 단어와 한글 단어의 쌍을 저장하는 HashMap 컬렉션 생성
HashMap<String, String> dic =
new HashMap<String, String>();
// 데이터 추가
put(key, value)
// 데이터 검색
get(key)
// 데이터 삭제
remove(key)
// 키 존재 여부 확인
containsKey(key)
// 값 존재 여부 확인
containsValue(value)
graph LR
A["입력: 'hello'"] -->|해시 함수| B["출력: 69609650"]
C["입력: 'hello'"] -->|해시 함수| D["출력: 69609650"]
같은 입력은 항상 같은 출력을 생성
graph LR
A["입력: 'hello'"] -->|해시 함수| B["출력: 69609650"]
C["입력: 'helle'"] -->|해시 함수| D["출력: 24563423"]
한 글자만 달라져도 완전히 다른 출력 생성
flowchart LR
A["Key: 'apple'"] -->|"hashCode()"| B["Hash: 93029210"]
C["Key: 'love'"] -->|"hashCode()"| D["Hash: 3327206"]
E["Key: 'baby'"] -->|"hashCode()"| F["Hash: 2857203"]
B --> |"% 16"| G["버킷[5]: '사과'"]
D --> |"% 16"| H["버킷[10]: '사랑'"]
F --> |"% 16"| I["버킷[3]: '아기'"]
graph TD
subgraph Chaining
A["Key1: 'apple'"] -->|"hashCode() % 16"| B["버킷[4]"]
B --> D["apple: '사과'"]
C["Key2: 'grape'"] -->|"hashCode() % 16"| B
D --> E["grape: '포도'"]
end
같은 버킷에 연결 리스트로 저장
graph TD
subgraph Open_Addressing
F["Key1: 'apple'"] -->|"hashCode() % 16"| G["버킷[4]: apple='사과'"]
H["Key2: 'grape'"] -->|"hashCode() % 16"| G
G -->|"충돌! 다음 버킷으로"| I["버킷[5]: grape='포도'"]
end
충돌 발생 시 다음 빈 버킷을 찾아 저장
| 동작 | HashMap | 배열 |
|---|---|---|
| 검색 | O(1) | O(n) |
| 삽입 | O(1) | O(1) |
| 삭제 | O(1) | O(n) |
// 3 개의 (key, value) 쌍을 dic에 저장
dic.put("baby", "아기"); // "baby"는 key, "아기"은 value
dic.put("love", "사랑");
dic.put("apple", "사과");
| Key (영어) | Value (한글) |
|---|---|
| baby | 아기 |
| love | 사랑 |
| apple | 사과 |
// 사용자 입력을 위한 Scanner 객체 생성
Scanner scanner = new Scanner(System.in);
// 무한 루프 시작
while(true) {
System.out.print("찾고 싶은 단어는?");
String eng = scanner.next();
// "exit" 입력 시 프로그램 종료
if(eng.equals("exit")) {
System.out.println("종료합니다...");
break;
}
equals() 메소드로 문자열 비교
// 해시맵에서 '키' eng의 '값' kor 검색
String kor = dic.get(eng);
if(kor == null)
System.out.println(eng + "는 없는 단어 입니다.");
else
System.out.println(kor);
// Scanner 객체 닫기
scanner.close();
프로그램 종료 전 시스템 자원 정리
import java.util.*;
public class Main {
public static void main(String[] args) {
HashMap<String, String> dic =
new HashMap<String, String>();
dic.put("baby", "아기");
dic.put("love", "사랑");
dic.put("apple", "사과");
Scanner scanner = new Scanner(System.in);
while(true) {
System.out.print("찾고 싶은 단어는?");
String eng = scanner.next();
if(eng.equals("exit")) {
System.out.println("종료합니다...");
break;
}
String kor = dic.get(eng);
if(kor == null)
System.out.println(eng + "는 없 단어 입니다.");
else
System.out.println(kor);
}
scanner.close();
}
}