티스토리 뷰
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) | -  key와 value 쌍을 추가합니다.  - 만약 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@4b9af9a9728x90
    
    
  반응형
    
    
    
  '[개발] - 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