티스토리 뷰

Java

HashMap 구현 및 응용

lluna 2022. 1. 1. 13:45

Result

영화

Main.java

public class Main {
    public static void main (String[] args) {
        WordDic dictionary = new WordDic();
        
        dictionary.addWord("Movie", "영화");
        dictionary.addWord("cat", "고양이");
        dictionary.addWord("dog", "개");

        System.out.println(dictionary.find("movie"));
        System.out.println(dictionary.find2("Dog"));
    }
}

WordDic.java

일급콜렉션 (First-class Collection) 으로 구현

import java.util.HashMap;
import java.lang.Character;

public class WordDic {
    // 해시맵 인스턴스 생성 => 클래스에서 인스턴스를 생성한다는 것이, 결국 그 클래스로 인스턴스를 생성할때도 적용된다는것인지??
    // private으로 설정하여 같은 패키지 내의 다른 클래스의 접근을 막음
    private HashMap<String, String> myDic = new HashMap<>();

    // 단어를 추가하는 메서드
    public void addWord(String eng, String kor) {
        myDic.put(eng, kor);
    }

    // 한국어 뜻을 찾는 메서드
    public String find(String myKey) {
        // 대소문자 상관 없어야
        // 문자열 값이 없을 때 문자열의 첫글자가 소문자면 대문자로, 대문자면 소문자로 바꿔서 다시 검색
        if (myDic.get(myKey) == null) {
            // charAt() 메소드를 사용하여 char 가져오기
            Character firstChar = myKey.charAt(0);
            // 문자열을 캐릭터 배열로
            char[] chars = myKey.toCharArray();
            // 첫 캐릭터가 대문자면
            if (Character.isUpperCase(firstChar)) {
                // 0번 인덱스를 교체
                chars[0] = Character.toLowerCase(firstChar);
            } else {
                chars[0] = Character.toUpperCase(firstChar);
            }
            // 캐릭터 배열을 다시 문자열로 전환
            String myNewKey = String.valueOf(chars);
            // 검색
            return myDic.get(myNewKey);
        }
        return myDic.get(myKey);
    }


    // 한국어 뜻을 찾는 메서드2
    public String find2(String myKey) {
        // 대소문자 상관 없어야
        // 해시맵의 키를 순회
        for (String word:myDic.keySet()) {
            // 만약 키를 소문자로 바꾼것이 파라미터를 소문자로 바꾼 스트링과 같다면
            // 해당 키로 값을 찾아서 반환
            if (word.toLowerCase().equals(myKey.toLowerCase())) {
                return myDic.get(word);
            }
        }
        // 그래도 답이 없다면 null을 반환
        return null;
    }
}

'Java' 카테고리의 다른 글

String , Math, Random Class  (0) 2021.12.31
Class Random, Class Math  (0) 2021.12.31
[Java] 클래스 메서드 (Math 클래스 메서드)  (0) 2021.12.30
[Java] Scanner  (0) 2021.12.30
[Java] 숫자의 길이 구하기  (0) 2021.12.30
댓글