Map(순서X, 중복X-(키X,값O))

김덕근·2022년 12월 29일
0

concept

목록 보기
17/21

Map(순서X, 중복X-(키X,값O))

HashMap<K, V> : Map의 자식 클래스 중 가장 대표되는 Map

핵심 Point❗ (VO 생성 없이)
여러개의 ( 키(key)와 값(value) )을 하나의 객체(인스턴스)로 만들어 낼 수 있다.

Ex)key : value
"name":"홍길동"
"address":"서울시 중구"

키(key)와 값(value)으로 구성되어 있으며, 키와 값은 모두 객체
키는 중복 저장을 허용하지 않고(Set방식), 값은 중복 저장 가능(List방식)

HashMap : 중복을 허용하지 않고 순서를 보장하지 않으며 null 값을 허용한다.
Hashtable : HashMap 보다는 느리지만 동기화를 지원하며 null 값을 허용하지 않는다.
TreeMap : 정렬된 순서대로 Key와 Value를 저장하므로 빠른 검색이 가능하지만 요소를 추가할 때 정렬로 인해 오래걸린다.
LinkedHashMap : HashMap과 기본적으로 동일하지만 입력한 순서대로 접근이 가능하다.

객체 검색
Map에 담겨있는 요소들에 순차적으로 접근하기 위한 방법 2가지
1. Set keySet() 으로 Map의 Key를 Set에 담은후 Set에 있는 Iterator를 통해 접근
2. Set entrySet() 으로 Map의 키와 값을 Set에 담은 후 Set에 있는 Iterator를 통해 접근

HashMap

키 객체는 hashCode()와 equals()를 재정의해 동등 객체가 될 조건을 정해야 함
때문에 키 타입은 hashCode와 equals()메소드가 재정의되어 있는 String타입을 주로 사용
예) Map<K, V> map = new HashMap<K, V>();

// 객체 생성
Map<Integer, String> map = new HashMap<Integer, String>();

// 값 입력
map.put(1, "홍길동"); 
map.put(Integer Key, String Value)


System.out.println(map); // map.toString() 오버라이딩 되어있음.

------------------------------------------------------------
					// key를 불러옴
Set<String> set = map.keySet();



for(String key : set) {
		System.out.println(map.get(key));
}							// key의 value를 리턴

----------------------------------------------------------

List + Map

List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
		
	for(int i = 0; i < 10; i++) {
		// Map 생성
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("id", "user0" + i);
		map.put("pw", "pass0" + i);
			
		// Map을 List에 추가
		list.add(map);
		}
		
		// for문 종료 시점에 List에는 10개의 Map객체가 추가 되어있다.
		// *List에 저장된 Map에서 Key가 "id"인 경우의 Value를 모두 출력*
		// 향상된 for문
		
		for(Map<String, Object> temp : list) {
			System.out.println(temp.get("id"));
		}
	
	}


Object.put(Integer Key, String Value); : 값 입력(객체 생성)

Object.get(Object key); key에 들어있는 value 출력

Set keySet() / ex) Set set = map.keySet(); key만 가져오기

Set entrySet() : key와 value 모두 가져오기

profile
안녕하세요!

0개의 댓글