Backend

<Backend> Java / HashMap

이게왜 2023. 11. 6. 18:26

https://rezerocodinglife.tistory.com/22

 

Start <명품JAVA> ArrayList

명품자바의 예제문제, 실습문제를 풀며 공부해 나갑니다. 목표는 Collection, Generic, Comparable, Comparator, Iterable, Iterator, Stream, Lambda Expression등을 공부하여 이를 활용한 몬테카를로 시뮬레이션 미니 프

rezerocodinglife.tistory.com

공부를 시작하며 작성한 글 입니다. 공부하며 사용한 자료들이 있으니 참고하시면 좋겠습니다.

 

<HashMap 문제>

  1. 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의 장점>

  1. 키-값 쌍 저장: HashMap은 키-값 쌍을 저장하기에 데이터를 검색 및 업데이트할 때 효과적입니다.
  2. 빠른 검색 및 업데이트: 해시맵은 키를 사용하여 매우 빠르게 데이터를 검색하고 업데이트할 수 있습니다. 시간 복잡도는 O(1)입니다.
  3. 다양한 데이터 유형 지원: HashMap은 다양한 데이터 유형을 저장할 수 있으며, 키와 값 모두 객체로 저장할 수 있습니다.

<HashMap의 단점>

  1. 순서 없음: HashMap은 데이터의 순서를 유지하지 않으므로 데이터를 순서대로 처리해야 하는 경우에는 유용하지 않을 수 있습니다.
  2. 해시 충돌: 해시 함수가 충돌하면 성능 저하가 발생할 수 있으며, 충돌을 처리하려면 별도의 메커니즘을 구현해야 할 수 있습니다.
  3. 메모리 사용량: 해시맵은 해시 테이블을 사용하기 때문에 일정한 메모리를 소비합니다. 작은 데이터 집합의 경우에는 메모리 공간을 낭비할 수 있습니다.

'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