JAVA 맵에 대해서 알아보자! (개념, 데이터 사용)

호연지기·2023년 6월 3일
0
post-thumbnail

Map이란?

Map은 리스트나 배열처럼 순차적으로 해당 요소 값을 구하지 않고 key를 통해 value를 얻는다.

Map의 특징

  • 키는 중복될 수 없고 값은 중복을 허용한다.
  • 특정 키를 사용하여 값을 검색하거나, 새로운 키-값 쌍을 추가하고, 기존의 값을 업데이트하거나 제거할 수 있다.
  • 데이터의 검색 속도가 중요한 경우나, 고유한 키를 사용하여 데이터를 저장하고자 할 때 유용하다.
  • {이름:홍길동}, {고양이:cat} 과 같이 대응 관계를 쉽게 표현할 수 있는 자료형

Map에서 데이터 추가하기

put 메소드를 이용하여 맵에 원하는 값을 매칭시켜서 추가할 수 있다.

HashMap

HashMap은 자바에서 제공하는 맵(Map) 인터페이스를 구현한 클래스 중 하나로 해시 테이블(hash table)을 기반으로한 맵이다.
키(key)와 값(value)의 쌍을 저장하고 검색하는 데 사용된다.

import java.util.HashMap;

public class MapExample {
    public static void main(String[] args) {
        Map<String, String> dictionary = new HashMap<>();
        dictionary.put("chicken", "닭");
        dictionary.put("hippo", "하마");
        }
}

chicken:닭 , hippo:하마 값을 dictionary에 넣어주었다.

Map에서 데이터 가져오기

get : key에 해당하는 value값을 얻기 위해서 사용하는 메소드

System.out.println(dictionary.get("chicken"));

해석 : dictionary에서 chicken에 해당하는 value 가져오렴

Map에서 데이터 제거하기

데이터를 제거할 때도 put 메소드를 사용할 수 있다.

dictionary.put("chicken", null);

해석 : dictionary에 있는 chicken 키에 해당하는 값 null로 매칭하렴

이렇게 하면 chicken에 해당하는 값이 null값으로 변경되지만 데이터는 아직 남아있는 상태라서 size 명령어로 사이즈 크기를 확인하면 데이터가 그대로 남아있는 것으로 인식된다.

그래서 깔끔하게 지워버릴 때는 remove를 사용하면 된다.

dictionary.remove("chicken");
dictionary.remove("hippo");   

키값에 해당되는 데이터(key, value)를 삭제 후 그 value값을 리턴하는 명령어

System.out.println(dictionary.remove("chicken")); //"닭" 출력

Map의 크기 확인하기

size : Map의 개수를 리턴하는 메소드

if (dictionary.isEmpty()) {
    System.out.println("단어가 하나도 없습니다.");
    System.exit(0);
} else {
    System.out.println(dictionary.size() + " 개의 단어가 있습니다.");
}
System.out.println(dictionary.size() + "개의 단어가 있습니다.");

dictionary가 비어 있는 상태인지 isEmpty()로 확인하고 맞다면 "단어가 하나도 없습니다."를 출력한다.
아니라면 size로 dictionary의 개수를 확인해서 출력한다.

반복문에서 Map 이용하기

keySet()메서드는 맵의 모든 키를 모아서 Set 자료형으로 리턴한다.

import java.util.HashMap;

public class Practice {
    public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<>();
        map.put("people", "사람");
        map.put("soccer", "축구");
        System.out.println(map.keySet()); // [people, soccer] 출력
    }
} 

반복문으로 표현하기(for)

public class Practice {
    public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<>();
        map.put("people", "사람");
        map.put("soccer", "축구");
        
        Collection<String> keys = map.keySet();
        for (String abc : keys) {
            System.out.println(abc);// [people, soccer] 출력
        }
    }
}

키랑 값을 동시에 보려면 어떻게 해야할까?

entryset : 맵에 저장된 키-값 데이터를 표현하는 entry 객체의 집합(Set)을 반환한다.

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Practice {
    public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<>();
        map.put("people", "사람");
        map.put("soccer", "축구");

        Set<Map.Entry<String, String>> entries = map.entrySet();

        for (Map.Entry<String, String> entry : entries) {
            String abc = entry.getKey();
            String korean = entry.getValue();

            System.out.println(abc + ": " + korean);
        }
    }
}

출력 결과

soccer: 축구
people: 사람

entrySet()메소드를 사용하여 Map.Entry 객체들의 Set을 얻은 후 반복문을 통해 각 Map.Entry 객체에서 키와 값을 추출하여 출력한다.

📅 DATE

2023.06.03 작성

profile
사람의 마음에 차 있는 너르고 크고 올바른 기운

0개의 댓글