[Day 7 | Java] Map

y♡ding·2024년 10월 22일
0

데브코스 TIL

목록 보기
38/163

Map 인터페이스와 HashMap 클래스

Map 인터페이스는 자바 컬렉션 프레임워크에서 키(key)값(value)의 쌍으로 데이터를 저장하는 자료구조를 정의하는 인터페이스입니다. HashMapMap 인터페이스를 구현한 대표적인 클래스 중 하나로, 데이터를 해시 테이블 방식으로 관리합니다.


HashMap의 특징:

  • 순서가 없음: HashMap은 요소가 삽입된 순서를 보장하지 않습니다.
  • 중복된 키는 허용되지 않음: 중복된 키를 허용하지 않으며, 같은 키로 다시 값을 삽입하면 기존 값이 덮어쓰기됩니다.
  • 빠른 성능: HashMap은 O(1)의 시간 복잡도로 검색, 삽입, 삭제를 처리할 수 있습니다.
  • null 허용: 키와 값에 null을 허용합니다. 단, 는 한 번만 null 값을 가질 수 있고, 값에는 여러 번 사용할 수 있습니다.

HashMap의 주요 메서드

  • put(K key, V value): 주어진 키와 값HashMap에 저장합니다. 만약 같은 키가 이미 존재하면, 새로운 값으로 덮어씁니다.
  • get(Object key): 주어진 키에 해당하는 을 반환합니다. 키가 존재하지 않으면 null을 반환합니다.
  • remove(Object key): 주어진 키에 해당하는 값을 삭제합니다.
  • containsKey(Object key): 주어진 키가 존재하는지 여부를 확인합니다. 존재하면 true, 없으면 false를 반환합니다.
  • containsValue(Object value): 주어진 값이 존재하는지 여부를 확인합니다. 값이 존재하면 true, 없으면 false를 반환합니다.
  • keySet(): HashMap에 존재하는 모든 키Set 형태로 반환합니다.
  • values(): HashMap에 존재하는 모든 값Collection 형태로 반환합니다.

수업코드


package com.util1;

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

public class HashMapEx01 {
    public static void main(String[] args) {
        // HashMap 객체 생성: 키와 값을 모두 String 타입으로 설정
        HashMap<String, String> hm1 = new HashMap<>();

        // HashMap에 키-값 쌍 추가 (put 메서드 사용)
        // "a"라는 키에 "홍길동"이라는 값 저장
        hm1.put("a", "홍길동");
        // "b"라는 키에 "박문수"라는 값 저장
        hm1.put("b", "박문수");
        // "c"라는 키에 "임꺽정"이라는 값 저장
        hm1.put("c", "임꺽정");

        // HashMap의 전체 내용 출력
        // 출력 형식: {키1=값1, 키2=값2, ...}
        System.out.println(hm1);  // {a=홍길동, b=박문수, c=임꺽정}

        // HashMap의 크기 (저장된 키-값 쌍의 개수) 출력
        System.out.println(hm1.size());  // 3

        // 새로운 키-값 쌍 추가
        // "d"라는 키에 "장길산"이라는 값을 저장
        hm1.put("d", "장길산");
        System.out.println(hm1);  // {a=홍길동, b=박문수, c=임꺽정, d=장길산}

        // 기존 키 "c"에 새로운 값 "장길산" 저장 (덮어쓰기)
        // 기존에 저장된 "c"의 값이 "임꺽정"에서 "장길산"으로 변경됨
        hm1.put("c", "장길산");
        System.out.println(hm1);  // {a=홍길동, b=박문수, c=장길산, d=장길산}

        // 특정 키에 대한 값 가져오기 (get 메서드 사용)
        // "a"라는 키에 해당하는 값을 출력 (홍길동)
        System.out.println(hm1.get("a"));  // 홍길동
        // "b"라는 키에 해당하는 값을 출력 (박문수)
        System.out.println(hm1.get("b"));  // 박문수

        // HashMap에 저장된 모든 키를 가져오기 (keySet 메서드 사용)
        Set<String> keys = hm1.keySet();
        System.out.println(keys);  // [a, b, c, d]

        // 반복문을 사용해 모든 키에 해당하는 값을 출력
        for (String key : keys) {
            // 각 키에 해당하는 값을 출력
            System.out.println(hm1.get(key));  // 홍길동, 박문수, 장길산, 장길산
        }

        // HashMap에 저장된 모든 값 가져오기 (values 메서드 사용)
        Collection<String> values = hm1.values();
        // 반복문을 사용해 모든 값을 출력
        for (String value : values) {
            System.out.println(value);  // 홍길동, 박문수, 장길산, 장길산
        }
    }
}

package com.util1;

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

public class HashMapEx02 {
    public static void main(String[] args) {
        // 사용자 정의 클래스도 Map에 지정 가능
        // 1. Student 객체 생성 (학번과 이름을 인자로 전달)
        Student s1 = new Student("1001", "박문수");
        Student s2 = new Student("1002", "홍길동");
        Student s3 = new Student("1003", "임꺽정");

        // 2. HashMap 생성 (키는 String 타입, 값은 Student 객체 타입)
        HashMap<String, Student> map = new HashMap<>();

        // 3. HashMap에 키-값 쌍으로 Student 객체 추가
        map.put("a", s1);  // "a" 키에 박문수 객체 추가
        map.put("b", s2);  // "b" 키에 홍길동 객체 추가
        map.put("c", s3);  // "c" 키에 임꺽정 객체 추가

        // 4. HashMap 전체 출력 (키-값 쌍으로 출력)
        // 출력 형식: {키1=값1, 키2=값2, ...}
        System.out.println(map);  // {a=박문수, b=홍길동, c=임꺽정}

        // [실습] HashMap의 키셋과 값컬렉션을 추출하고 반복문으로 출력해보세요.
        // HashMap의 모든 키를 가져오기 (keySet 메서드 사용)
        Set<String> keys = map.keySet();
        // 각 키를 출력
        for (String key : keys) {
            System.out.println(key);  // "a", "b", "c" 출력
        }

        // HashMap에 저장된 모든 값을 가져오기 (values 메서드 사용)
        Collection<Student> values = map.values();
        // 각 값을 출력 (toString 메서드를 통해 Student 객체 출력)
        for (Student value : values) {
            System.out.println(value);  // 박문수, 홍길동, 임꺽정 출력
        }
    }
}

0개의 댓글

관련 채용 정보