🎯 목표 : HashMap의 활용 방법과 개념 이해
📒 HashMap
📌 Interface Map의 주요 메소드

❗특징
- Map 인터페이스를 구현한 대표적인 컬렉션 클래스.
- Hashing 기법으로 데이터를 저장하여 데이터가 많아도 검색 빠름
- 데이터를 Key , Value Pair로 저장한다.
- 순서 유지하려면 LinkedHashMap클래스를 사용한다.
- TreeMap은 범위 검색과 정렬에 유리한 클래스
- TreeMap은 HashMap보다 데이터 추가, 삭제에 시간이 더 걸린다.
- TreeMap은 TreeSet과 비교했을때, Key(중복 불가), Value(중복 가능)로 이루어 져 있다는것 외 동일한 기능을한다.
📌 주요 메소드

📌 해시 테이블에 저장된 데이터를 가져오는 과정

- 키 값에 대응하는 해시코드를 가지고 링크드 리스트에서 일치하는 데이터를 찾는다.
- 서로 다른 키라도 같은 값의 해시코드를 반환할수 있다.
📌 예제 1
- HashMap에 키와 값을 put한 이후에 같은 키로 다른 값을 put하게되면 나중에 put된 값으로 바뀐다.
HashMap<String, Integer> a = new HashMap<>();
a.put("one", 1);
a.put("two", 2);
a.put("three", 3);
System.out.println(a);
a.put("one",5);
System.out.println(a);
📌 예제 2
- key와 value 값을 가지고 존재 여부에 따라 상이한 출력 예제
import java.util.*;
class HashMapStudy {
public static void main(String[] args) {
HashMap list = new HashMap();
list.put("sussa" ,"1q2w");
list.put("suyoung" ,"1a2s");
list.put("pop123" ,"1q2w");
list.put("sussa","1234"); // 키가 동일하고 값이 다르게 put되면 해당 키에 대한 값을 변경한다.
Scanner in = new Scanner(System.in); // 하나의 라인 단위로 입력받음.
while (true) { // 정상적으로 입력 될때까지 계속 반복해준
System.out.println("ID 와 PW 를 입력하세요");
System.out.print("Id : ");
String id = in.nextLine().trim();
if (!(list.containsKey(id))) {
System.out.println("ID is Wrong!");
// break;
continue;
}
System.out.print("Pw : ");
String pw = in.nextLine().trim();
if (list.get(id).equals(pw)) {
System.out.println("==============");
System.out.println("Success Login");
break; // 모두 일치하면 Stop
} else {
System.out.println("Password Wrong");
} // 잘못된 비밀번호 입력하면 출력하고 재 입력
}
}
}
📌 예제 2
- 문자열 배열의 값들을 HashMap에 키로 저장하고 값들을 수정하여 배열에 저장된 문자별 빈도 확인
import java.util.*;
class HashMapStudy3 {
public static void main(String[] args) {
String[] data = { "A","K","A","K","D","K","A","K","K","K","Z","D" };
HashMap map = new HashMap();
for(int i=0; i < data.length; i++) {
if(map.containsKey(data[i])) { //data[i]값 map에 키값으 있는지 확인
int value = (int)map.get(data[i]); // 있다면 data[i] 키의 값을 가져와 value에 저장
map.put(data[i], value+1); // 기존에 존재하는 키라면 기존 값을 1증가
} else {
map.put(data[i], 1); // 기존에 존재하지 않는 키는 값을 1로 저장
}
}
Iterator it = map.entrySet().iterator();
while(it.hasNext()) {
Map.Entry entry = (Map.Entry)it.next();
int value = (int)entry.getValue();
System.out.println(entry.getKey() + " : " + value );
}
} // main
}
출력값
A : 3
D : 2
Z : 1
K : 6'Language > JAVA' 카테고리의 다른 글
| Java Collection Framework 요약 (0) | 2022.08.29 |
|---|---|
| Java Class Collections (0) | 2022.08.29 |
| Java Class TreeSet(Interface Set) (0) | 2022.08.28 |
| Java Class HashSet (Interface Set) (0) | 2022.08.28 |
| Java Comparator 와 Comparable (0) | 2022.08.28 |