티스토리 뷰
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@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