자바 컬렉션 프레임워크(2) - Map

Gaeng·2024년 11월 2일
0

Java 알고리즘

목록 보기
2/6

Map 컬렉션

공식문서

Map 컬렉션은 키-값 쌍(key-value pair)으로 데이터를 저장하는 자바 컬렉션입니다. Map은 다른 컬렉션과는 다르게 키를 기준으로 데이터에 접근할 수 있으며, 중복된 키를 허용하지 않지만 값은 중복이 가능하다는 특징을 가집니다. 자바에서 Map 인터페이스를 구현하는 대표적인 클래스에는 HashMap, TreeMap, LinkedHashMap, Hashtable 등이 있습니다.

주요 특징

  • (key, value)로 이루어진 엔트리 객체를 저장한다.
  • key는 중복 허용 되지 않음
  • key를 이용해서 저장 한 값 가져올 수 있음.
  • 하위 HashMap , HashTable 클래스를 구현 가능
  • HashTable은 스레드 동기화를 지원, HashMap 은 지원 X

다음은 Map컬렉션에서 사용하는 인터페이스 메소드이다.

메소드설명
put(K key, V value)지정된 키와 값을 Map에 추가합니다. 이미 존재하는 키면 값을 덮어씁니다.
get(Object key)지정된 키에 매핑된 값을 반환합니다. 키가 없으면 null을 반환합니다.
remove(Object key)지정된 키에 매핑된 키-값 쌍을 제거합니다.
containsKey(Object key)Map에 지정된 키가 포함되어 있는지 여부를 반환합니다.
containsValue(Object value)Map에 지정된 값이 포함되어 있는지 여부를 반환합니다.
keySet()Map의 모든 키를 Set으로 반환합니다.
values()Map의 모든 값을 Collection으로 반환합니다.
entrySet()Map의 모든 키-값 쌍을 Set으로 반환합니다.
size()Map에 저장된 키-값 쌍의 개수를 반환합니다.
clear()Map의 모든 키-값 쌍을 제거합니다.

HashMap?

😊HashMap

HashMap은 Map 계열에서 가장 많이 사용되는 컬렉션. HashMap은 객체를 Key, value로 저장하여, key를 통해 value 값을 얻는다.

import java.util.HashMap;
import java.util.Map;

public class HashMapExample {
    public static void main(String[] args) {
        // HashMap 객체 생성
        Map<String, Integer> map = new HashMap<String, Integer>();

        // 데이터 추가 (put 메소드 사용)
        map.put("Alice", 85);
        map.put("Bob", 92);
        map.put("Charlie", 78);

        // 값 가져오기 (get 메소드 사용)
        System.out.println("Alice의 점수: " + map.get("Alice"));
        System.out.println("Bob의 점수: " + map.get("Bob"));

        // 특정 키가 존재하는지 확인 (containsKey 메소드 사용)
        if (map.containsKey("Charlie")) {
            System.out.println("Charlie의 점수는 " + map.get("Charlie") + "점입니다.");
        } else {
            System.out.println("Charlie의 점수 정보가 없습니다.");
        }

        // 모든 키 가져오기 (keySet 메소드 사용)
        System.out.println("\n전체 학생 목록 (keySet 사용):");
        for (String key : map.keySet()) {
            System.out.println(key + "의 점수: " + map.get(key));
        }

        // 모든 키-값 쌍 가져오기 (entrySet 메소드 사용)
        System.out.println("\n전체 학생 점수 목록 (entrySet 사용):");
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + "의 점수: " + entry.getValue());
        }

        // 값 수정
        map.put("Alice", 90); // Alice의 점수를 90으로 업데이트
        System.out.println("\n업데이트된 Alice의 점수: " + map.get("Alice"));

        // 데이터 삭제 (remove 메소드 사용)
        map.remove("Bob");
        System.out.println("\nBob의 점수 삭제 후 전체 목록:");
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + "의 점수: " + entry.getValue());
        }

        // HashMap 크기 확인 (size 메소드 사용)
        System.out.println("\n총 학생 수: " + map.size());
    }
}

##실행결과##
Alice의 점수: 85
Bob의 점수: 92
Charlie의 점수는 78점입니다.

전체 학생 목록 (keySet 사용):
Alice의 점수: 85
Bob의 점수: 92
Charlie의 점수: 78

전체 학생 점수 목록 (entrySet 사용):
Alice의 점수: 85
Bob의 점수: 92
Charlie의 점수: 78

업데이트된 Alice의 점수: 90

Bob의 점수 삭제 후 전체 목록:
Alice의 점수: 90
Charlie의 점수: 78

총 학생 수: 2
profile
문제를 해결하면서 나온 문제를 기록하는 노트

0개의 댓글