HashMap은 키와 값을 가진 자료 구조를 사용할 수 있는 컬렉션 프레임 워크다.

 

[키 : 값] 이 한쌍으로 되어있는데 값은 중복이 되도 키는 유일해야 한다.

 

하나의 유일한 키가 있기 때문에 로그인 정보(아이디, 패스워드) 같은 자료 구조에 적합하다.

 

파이썬에는 dictionary 라는 자료형이 있는데 사용법은 다르지만 키와 값을 매칭시킨다는 개념은 비슷하다.

 

 

* 아래 예제는 HashMap에 키와 값을 저장한다. 키가 중복되는 경우 기존의 내용을 덮어버린다.

package com;
import java.util.*;

public class HashMap {
    public static void main(String[] args) {

        java.util.HashMap map = new java.util.HashMap();
        map.put("MyID", "1234");
        map.put("abcd", "1111");
        map.put("abcd", "1234");

        Scanner s = new Scanner(System.in);

        while(true){
            System.out.println("id와 패스워드를 입려하시오");
            System.out.println("id : ");
            String id = s.nextLine().trim();

            System.out.println("password : ");
            String password = s.nextLine().trim();
            System.out.println();

            if(!map.containsKey(id)){
                System.out.println("다시 입력하세요");
                continue;
            }else{
                if(!(map.get(id)).equals(password)){
                    System.out.println("비번이 일치하지 않습니다");
                }else {
                    System.out.println("일치합니다!");
                    break;
                }
            }
        }
    }
}

 

 

*아래 코드에서 볼 수 있는 것 처럼 HashMap 클래스도 Set 과 Iterator , Collection 클래스의 메소드를 사용할 수 있다.

 

복잡해 보이지만 이미 구현된 기능들을이 있으니 적절한 메소드를 선택해서 사용하면 된다.

package com;

import java.util.*;
import java.util.HashMap;

public class HashMap2 {
    public static void main(String[] args) {

        HashMap map = new HashMap();
        map.put("김이박", 87);
        map.put("오야지", 90);
        map.put("아저씨", 70);
        map.put("아가씨", 65);
        map.put("오렌지", 67);
        map.put("나우리", 77);
        map.put("소리니", 94);

        Set set = map.entrySet();
        Iterator it = set.iterator();

        while(it.hasNext()){
            Map.Entry e = (Map.Entry)it.next();
            System.out.println("e.getKey() " + e.getKey() + " e.getValue() = " + e.getValue());
        }

        set = map.keySet();
        System.out.println("set = " + set);

        Collection values = map.values();
        it = values.iterator();

        int total = 0;

        while (it.hasNext()) {
            Integer i = (Integer)it.next();
            total += i.intValue();
        }

        System.out.println("total = " + total);
        System.out.println("(float)total/set.size() = " + (float)total/set.size());
        System.out.println("Collections.max(values) = " + Collections.max(values));
        System.out.println("Collections.min(values) = " + Collections.min(values));
    }
}

공유하기

facebook twitter kakaoTalk kakaostory naver band