[JAVA] Map

Ogu·2023년 5월 15일
0

Java

목록 보기
3/5

Map이란?

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

  • 맵(Map) keyvalue 한 쌍으로 이루어져 있으며, key를 통해 value를 찾습니다.

    • 순서 X
    • Key : 중복 X
    • Value : 중복 O

Map 인터페이스를 구현한 Map 자료형에는 HashMap, LinkedHashMap, TreeMap 등이 있습니다. 그중 가장 많이 사용하는 HashMap에 대하여 알아봅시다.

put

put 메서드를 이용해 HashMap에 데이터를 추가할 수 있습니다.

import java.util.HashMap;

public class Sample {
    public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<>();
        map.put("people", "사람");
        map.put("baseball", "야구");
    }
}

HashMap 역시 제네릭스를 이용합니다. 위의 HashMap의 제네릭스는 Key, Value 모두 String 타입입니다. 따라서 Key, Value에 String 이외의 자료형은 사용할수 없습니다.

get

get 메서드를 이용해 key에 해당하는 value 값을 받을 수 있습니다.

System.out.println(map.get("people"));  // "사람" 출력

🔔 getOrDefault

맵의 key에 해당하는 value가 없을 경우에 get 메서드를 사용하면 다음처럼 null이 리턴됩니다.
null 대신 디폴트 값을 얻고 싶은 경우에는 getOrDefault 메서드를 사용합니다.

System.out.println(map.getOrDefault("java", "자바"));  // "자바" 출력

containsKey

containsKey 메서드는 맵(Map)에 해당 키(key)가 여부를 확인하여 그 유무를 true, false으로 리턴합니다.

System.out.println(map.containsKey("people"));  // true 출력

remove

remove 메서드는 맵(Map)의 항목을 삭제하는 메서드입니다.
key값에 해당되는 아이템(key, value)을 삭제한 후 그 value 값을 리턴합니다.

System.out.println(map.remove("people"));  // "사람" 출력

size

size 매서드는 맵(Map)의 갯수를 리턴합니다.

System.out.println(map.size());

"people", "baseball" 두 값중 "people"항목을 삭제했으므로, 1이 출력됩니다.

keySet

keySet() 메서드는 Map의 모든 Key를 모아서 Set 자료형으로 리턴합니다.

import java.util.HashMap;

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

List 자료형으로 바꾸어 사용할 경우 다음과 같이 쓸 수 있습니다.

List<String> keyList = new ArrayList<>(map.keySet());

🤔 LinkedHashMap과 TreeMap

LinkedHashMap은 입력된 순서대로 데이터를 저장하는 특징을 가지고 있다.
TreeMap은 입력된 key의 오름차순 순서로 데이터를 저장하는 특징을 가지고 있다.

profile
私はゲームと日本が好きなBackend Developer志望生のOguです🐤🐤

0개의 댓글