본문 바로가기
JAVA

221026 Map

Map
=>Key와 Value를 한꺼번에 저장하는 자료구조 인터페이스
=>인스턴스를 생성할 때 Key와 Value의 자료형 2개를 설정해야 함
=>특별한 경우가 아니면 Key의 자료형은 String,
Value의 자료형은 모든 종류의 데이터를 저장하고자 하는 경우는 Object로 하고 그렇지 않은 경우는 
저장하고자 하는 데이터의 자료형을 설정하면 됨.

Map<Key의 자료형, Value의 자료형> 변수명= 


1)메서드
Value put(Key, Value): Map에 데이터를 저장하는 메서드(삽입)인데 이미 존재하는 key를 사용하면 추가되는 것이 아니고 수정됨
Value get(key) : key에 해당하는 Value를 리턴. java에서는 없는 key를 사용하면 null을 리턴함
Value remove(key): key에 해당하는 데이터 삭제
Set<key> keySet(): key들을 Set으로 리턴, Map에 저장된 모든 데이터를 순회하고자 하는 경우 이용
등등이 있다.


2)Map을 구현한 클래스
=>HashMap : key를 HashSet 형태로 보관
=>LinkedHashMap : key를 LinkedHashSet 형태로 보관
=>TreeMap : key를 TreeSet 형태로 보관


3)용도
=>여러 데이터를 하나로 묶어서 표현하기 위한 용도로 사용
=>최근에는 되도록이면 Map대신에 VO(DTO나 Entity)클래스를 만들어서 사용하는 것을 권장
why? VO클래스는 .찍으면 뭘 가지고 있는지 바로 확인가능한데 Map은 get안에 직접 적어야 함. 처음에 값을 put할 때 오타가 날 가능성이 높다.

4)Map을 이용한 데이터 저장과 읽어오기

package java_1026_Map_Ex;

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

public class MapClass {
	public static void main(String[] args) {
		//HashMap 인스턴스 생성
		Map<String, Object> map = new HashMap<>();
		
		//Map에 데이터 저장-put 
		map.put("num",1);
		map.put("name","아담");
		map.put("job","singer");
		//동일한 key에 데이터를 저장하면 이전 데이터가 삭제되고 수정됨.
		map.put("job","cyber singer");
		
		System.out.println(map);//전체 데이터 확인
		
		//Map에서 데이터 가져오기
		System.out.println(map.get("job"));
		//존재하지 않는 key 사용하면 null 리턴
		System.out.println(map.get("age"));
		
		
		//Map을 이용하면 key의 이름을 몰라도 모든 데이터를 접근하는 것이 가능
		//모든 key에 접근할 수 있는 Set을 가져오기
		
		Set<String> keys = map.keySet();
		//Set을 순회
		for(String key : keys) {
			//key를 순회하면서 key에 지정된 value를 확인
			System.out.print(key+":"+map.get(key)+"\s\s");
		}
		
		System.out.println();
		map.remove("num");
		System.out.println(map.get("num"));//값을 지워서 null이 출력됨
		
		
	}

}
{num=1, name=아담, job=cyber singer}
cyber singer
null
num:1  name:아담  job:cyber singer  
null



5)Map 학습 방법
=>응용 프로그램 개발자가 될 거라면 Map을 만들어서 데이터를 저장하고 가져오는 것만 할 수 있으면 됨
가져올 때는 없는 key를 사용했을 때 어떤 데이터가 리턴되는지, 또는 에러가 발생하는지 확인할 수 있어야 함

=>프레임워크나 솔루션을 만드는 개발자가 되려고 하면 Map의 많은 메서드를 사용해보고 이를 활용할 수 있어야 함

'JAVA' 카테고리의 다른 글

221027 FIie과 Stream  (0) 2022.10.27
221026 Properties  (0) 2022.10.26
221026 Set 실습 -ArrayList와 비교  (0) 2022.10.26
221026 Set  (0) 2022.10.26
221026 인터페이스 구현과 메서드 호출하기  (0) 2022.10.26