코드 그라데이션

Day28-3. 자료구조(6) Map 본문

Java/Mega

Day28-3. 자료구조(6) Map

완벽한 장면 2023. 4. 24. 21:26

Map

: 키와 값으로 (쌍으로) 데이터를 저장하는 자료구조

- 나중에 자바스크립트에서 데이터 넘어올 때 Map 형식으로 넘어오게 되므로 중요하다!!!

형태

Map<key, value>

 

- 특이한 지점은 Key를 통해 Value 값을 받음.

- Key를 모르면 Value에 접근할 수 없으므로 주의해야 함.

 

Key 는 Set 형식으로 들어온다.

그래서 Set이 좀 불편하더라도 알고 있어야 하는 것...

대표적인 사례

클래스 설명
HashMap - 가장 일반적으로 사용되는 해시 테이블(hash table)을 구현한 클래스.
- 키와 값으로 이루어진 요소들을 저장하며, 순서를 보장하지 않는다.
TreeMap - 이진 검색 트리(binary search tree)를 구현한 클래스.
- 키에 대한 정렬을 유지하며, 키의 순서에 따라 값을 저장한다.
LinkedHashMap - 해시 테이블과 연결 리스트(linked list)를 결합한 클래스.
- 순서를 보장하면서 요소를 저장한다.

 

<주요 명령어(메서드)>

keyset() -> key를 전부 set으로 빼서 찾아야 함.

명령어 설명
V get(Object key) - key에 해당하는 value를 반환합니다.
- 만약 key가 존재하지 않는다면 null을 반환합니다.
V put(K key, V value) - keyvalue 쌍을 추가합니다.
- 만약 key가 이미 존재한다면 해당 key에 대한 값을 업데이트합니다.
V remove(Object key)
(인덱스 넣지 않습니다)
- key에 해당하는 요소를 제거하고 해당 value를 반환합니다.
- 만약 key가 존재하지 않는다면 null을 반환합니다.

boolean containsKey(Object key) - Map에 지정된 key가 포함되어 있는지 확인합니다.
- 포함되어 있다면 true를 반환하고, 포함되어 있지 않다면 false를 반환합니다.
boolean containsValue(Object value) - Map에 지정된 value가 포함되어 있는지 확인합니다.
- 포함되어 있다면 true를 반환하고, 포함되어 있지 않다면 false를 반환합니다.
int size() - Map에 저장된 요소의 개수를 반환합니다.
void clear()
- Map에서 모든 요소를 제거합니다.

 

예제 1>

package mega.backend_onemore.Day28;

import java.util.HashMap;
import java.util.Random;
import java.util.Scanner;

public class MapTest1 {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        Random r = new Random();
        System.out.print("보 바위 가위 선택하세요 : ");
        //String user = sc.next();
        int user = sc.nextInt();

        int com = r.nextInt(3); // 0~2

        HashMap<Integer, String> comMap = new HashMap<>();
        //Map에 값을 집어넣기
        comMap.put(0,"보");
        comMap.put(1,"바위");
        comMap.put(2,"가위");

        // 값 꺼내서 결과 출력
        //System.out.println("User : " + user +", Com : "+comMap.get(com));
        System.out.println("User : " + comMap.get(user)+", Com : "+comMap.get(com)); //  숫자입력하면 알아서 문자로 바꿔줌.
    }
}

출력 결과 > 

보 바위 가위 선택하세요 : 2
User : 가위, Com : 보

 

예제 2>

package mega.backend_onemore.Day28;

import java.util.HashMap;
// 이 예제 : 객체가 Key면서 객체가 값일 수 있다!
class C {
  int k;
}

class D {
  String str;
}

public class MapTest2 {

  public static void main(String[] args) {

    HashMap<C, D> map = new HashMap<>();
    C c = new C();
    C c1 = new C();
    map.put(c, new D());
    map.get(c1); // null
    map.get(c);//객체 D를 리턴

    System.out.println(map.get(c1));
    System.out.println(map.get(c));
  }

}

 

출력 결과 >

null
mega.backend_onemore.Day28.D@4b9af9a9
728x90

'Java > Mega' 카테고리의 다른 글

Day30-1. 문자열 자르기, 날짜 숫자 등 출력  (0) 2023.04.24
Day28-4. 자료구조 (7) Queue  (0) 2023.04.24
Day28-2. 자료구조(5) Set  (0) 2023.04.24
Day28-29. 파일 입출력  (0) 2023.04.24
Day27-4. 자료구조와 컬렉션 (2) Stack  (0) 2023.04.23
Comments