ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바[JAVA] - HashMap()개념 및 여러가지 메서드
    Java/자바의정석 2023. 3. 9. 23:42
    반응형

    HashMap의 개념

    HashMap은 Map 인터페이스를 구현한 대표적인 Map 컬렉션이다.
    Map은 Key와 Value 로 구성된 Entry객체를 저장하는 구조를 가지고 있다.
    Key와 Value는 모두 객체이며,  Key의 경우는 중복이 허용되지 않으며 Value는 중복이 허용된다.
    해싱(Hashing)기법을 사용하며 많은 양의 데이터를 검색하는 데 있어서 유리하다.
    Map 인터페이스를 구현하고있으며, 데이터를 Key와 Value의 쌍으로 저장한다.
    저장시에는 put을 사용하여 저장 put(key, value)
    똑같은 key값으로 다른 value값이 들어온다면 나중에 들어온 value값으로 변경된다.

     

    Entry

    Key 와 Value의 한쌍을 칭한다.

     

    메서드 기능
    HashMap() 기본생성자
    HashMap(int initialCapacity) 용량 초기화

     

    해시테이블 =  배열 + 링크드 리스트

    메서드 기능
    Object put(Object key, Object value) key와 value를 묶어서 저장
    void putAll(Map m) 지정된 Map에 있는것들을 모두 저장
    Object remove(Object key) 삭제
    Object replace(Object key, Object value) 변경 - 기존에 저장된 값을 키를 이용하여 새로운 값으로 지정
    Set entrySet() key, value한쌍으로 불러오기
    Set keySet() key값만 불러오기
    Collection values() value값만
    Object get(Object key) 키값을 준다면 value를 반환
    Object getOrDefault(Object key, Object defaultValue) 해당 키가 없을 경우 지정된 값을 반환
    boolean containsKey(Object key) 키가 있는지 확인
    boolean containsValue(Object value) 값이 있는지 확인

     

    이러한 메서드들을 코드를 보며 한번 살펴보자. 해당 코드는 자바의정석 예제이다.

    package JavaChap11;
    
    import java.util.*;
    
    class Ex11_16 {
        public static void main(String[] args) {
            HashMap map = new HashMap();
            map.put("myId", "1234");
            map.put("asdf", "1111");
            map.put("asdf", "1234");
    
            Scanner s = new Scanner(System.in);    // 화면으로부터 라인단위로 입력받는다.
    
            while(true) {
                System.out.println("id와 password를 입력해주세요.");
                System.out.print("id :");
                String id = s.nextLine().trim();
    
                System.out.print("password :");
                String password = s.nextLine().trim();
                System.out.println();
    
                if(!map.containsKey(id)) {
                    System.out.println("입력하신 id는 존재하지 않습니다. 다시 입력해주세요.");
                    continue;
                }
    
                if(!(map.get(id)).equals(password)) {
                    System.out.println("비밀번호가 일치하지 않습니다. 다시 입력해주세요.");
                } else {
                    System.out.println("id와 비밀번호가 일치합니다.");
                    break;
                }
            } // while
        } // main의 끝
    }

    =================실행결과==================

    id와 password를 입력해주세요.
    id :없어
    password :11

    입력하신 id는 존재하지 않습니다. 다시 입력해주세요.
    id와 password를 입력해주세요.
    id :asdf
    password :가나다라

    비밀번호가 일치하지 않습니다. 다시 입력해주세요.
    id와 password를 입력해주세요.
    id :

    password :
    입력하신 id는 존재하지 않습니다. 다시 입력해주세요.
    id와 password를 입력해주세요.
    id :myId
    password :1234

    id와 비밀번호가 일치합니다.


    HashMap map = new HashMap();
    map.put("myId", "1234");
    map.put("asdf", "1111");
    map.put("asdf", "1234");

    HashMap을 선언하고 put()을 이용하여 key,value값을 저장한다.

    while(true) {
        System.out.println("id와 password를 입력해주세요.");
        System.out.print("id :");
        String id = s.nextLine().trim();
    
        System.out.print("password :");
        String password = s.nextLine().trim();
        System.out.println();
    
        if(!map.containsKey(id)) {
            System.out.println("입력하신 id는 존재하지 않습니다. 다시 입력해주세요.");
            continue;
        }
    
        if(!(map.get(id)).equals(password)) {
            System.out.println("비밀번호가 일치하지 않습니다. 다시 입력해주세요.");
        } else {
            System.out.println("id와 비밀번호가 일치합니다.");
            break;
        }
    }

    Scanner로 입력을 받아오는데 맨처음에는 id 그리고 password들 입력받아온다.

     

    containsKey(id)  입력받은 id값이 key값에 포함되어있지 않다면

     id가 존재하지 않는다는 문구를 출력하며

     

    입력받은 id값의 value를 equals로 비교하여 일치하는지 비교한다.

    반응형

    댓글

Designed by Tistory.