본문 바로가기

DataStructure

[Java] 해시맵 (HashMap) 자료구조

📌 해시맵(HashMap)이란?

  • HashMap은 Map 인터페이스를 구현한 대표적인 Map 컬렉션이다.
  • Map은 키와 값으로 구성된 Entry객체를 저장하는 구조를 가지고 있는 자료구조입니다.
  • Key는 중복 저장될 수 없지만, Value는 중복 저장될 수 있다.
  • 기존에 저장된 키와 동일한 키로 값을 저장하면 기존의 값은 없어지고 새로운 값으로 덮어 씌운다.
  • HashMap은 이름 그대로 해싱(Hashing)을 사용하기 때문에 많은 양의 데이터를 검색하는 데 있어서 뛰어난 성능을 보인다.
  • HashMap은 해시 함수를 통해 Key와 Value 가 저장되는 위치를 결정하므로, 사용자는 그 위치를 알 수 없고, 삽입되는 순서와 들어 있는 위치 또한 관계가 없습니다.

📌 HashMap 선언 방식

// 선언 방식
HashMap<String,String> map1 = new HashMap<>();

HashMap<String,List<Integer>> map2 = new HashMap<>();

// 초기값 지정해주는 방식
Map<String, Integer> map3 = new HashMap<>() {
            {
                put("홍길동", 1);
                put("이순신", 2);
                put("호랑이", 2);
            }
        };

📌 HashMap 값 추가

HashMap<String,Integer> map = new HashMap<>();
map.put("홍길동",20);
map.put("이순신",30);
map.put("주윤발",40);

map.put("주윤발",20);

💡 만약 입력되는 키 값이 HashMap 내부에 존재한다면 기존의 값은 새로 입력되는 값으로 대치됩니다.

📌 HashMap 값 삭제

HashMap<String,Integer> map = new HashMap<>();
map.put("홍길동",20);
map.put("이순신",30);
map.put("주윤발",40);

map.remove("홍길동");
map.clear();

 

📌 HashMap 값 출력

HashMap<String, Integer> map = new HashMap<>();
        map.put("홍길동", 20);
        map.put("이순신", 30);
        map.put("주윤발", 40);

        map.put("주윤발", 20);

        System.out.println(map); // {홍길동=20, 이순신=30, 주윤발=20}

        System.out.println(map.get("이순신")); //key 값 이순신 의 value 값 얻기 : 30

        // entrySet 저장된 key 와 value 를 같이 출력
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println("[Key]:" + entry.getKey() + " [Value]:" + entry.getValue());
        }
        //[Key]:홍길동 [Value]:20
        //[Key]:이순신 [Value]:30
        //[Key]:주윤발 [Value]:20

        //KeySet : 저장된 key 값 출력
        for(String name : map.keySet()){
            System.out.println(name);
        }
        // 홍길동
        // 이순신
        // 주윤발

        // values : 키에 저장되어 있는 value 값 출력
        for (int value : map.values()) {
            System.out.println(value);
        }