sussa
컴퓨터가 할 일은 컴퓨터가.
sussa
전체 방문자
오늘
어제

블로그 메뉴

    • 분류 전체보기 (58)
      • Language (58)
        • JAVA (58)

    공지사항

    인기 글

    태그

    • java
    • 캡슐화
    • BinarySearchTree
    • HTML
    • Algorithm
    • 자료구조
    • 웹개발종합반
    • 조건문
    • singleton
    • Stream
    • Instance
    • Database
    • Method
    • 스파르타코딩클럽
    • recursion
    • spring
    • 재귀
    • Class
    • CSS
    • Thread
    • 개발자
    • DI
    • tree
    • 다형성
    • binaryTree
    • Til
    • inheritance
    • 최종연산
    • Web
    • 상속

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    sussa

    컴퓨터가 할 일은 컴퓨터가.

    Java HashMap (Interface Map)
    Language/JAVA

    Java HashMap (Interface Map)

    2022. 8. 29. 16:50

    🎯 목표 :  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
      'Language/JAVA' 카테고리의 다른 글
      • Java Collection Framework 요약
      • Java Class Collections
      • Java Class TreeSet(Interface Set)
      • Java Class HashSet (Interface Set)
      sussa
      sussa
      Efforts to take on a challenge

      티스토리툴바