Collection 클래스들 - Map

2023. 7. 18. 16:34JAVA

Map계열 : 키-벨류 쌍(Key-Value pair)으로 데이터를 저장하는 방식

Map 도 interface에서 직접 객체 생성 불가능

Map인터페이스를 구현한 하위 클래스들을 사용

1. HashMap : 저장순서 X, 인덱스 X, 대신 key(식별자)사용, 중복key X, 중복Data 허용

2. TreeMap : key(식별자)의 오름차순으로 정렬

3. LinkedHashMap : 저장순서대로 ...정렬

4. HashTable : HashMap와 99% 같음(멀티스레드에서 동기화 처리가 되어 있음)

 

import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;

public class MapTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		// Map계열 : 키-벨류 쌍(Key-Value pair)으로 데이터를 저장하는 방식
		
		// Map 도 interface에서 직접 객체 생성 불가능
		//Map인터페이스를 구현한 하위 클래스들을 사용
		//1. HashMap : 저장순서 X, 인덱스 X, 대신 key(식별자)사용, 중복key X, 중복Data 허용
		//2. TreeMap : key(식별자)의 오름차순으로 정렬
		//3. LinkedHashMap : 저장순서대로 ...정렬
		//4. HashTable : HashMap와 99% 같음(멀티스레드에서 동기화 처리가 되어 있음)
		
		//<키 타입, 벨류 타입>
		//HashMap<String, String> map = new HashMap<String, String>();
		//TreeMap<String, String> map = new TreeMap<String, String>();
		LinkedHashMap<String, String> map =new LinkedHashMap<String, String>();
		
		//요소 추가
		map.put("Name", "Hong");
		map.put("ID", "abcd");
		map.put("PW", "1234");
		map.put("kkk", "Hong"); //중복 Data는 허용
		map.put("kkk", "Park"); //중복 key는 허용X --> 저장이 안되는 것이 아니라 그 값이 변경되는 것임.
		
		System.out.println(map.size());
		
		//요소 얻어오기
		String s= map.get("Name");
		System.out.println(s);
		System.out.println(map.get("ID"));
		System.out.println(map.get("PW"));
		System.out.println(map.get("kkk")); 
		
		System.out.println(map.toString());
		
		//요소값을 순차적으로 얻어오기
		//방법 for, for each문도 불가능
		//방버1. 먼저 key값들만 먼저 뽑아와서 작업
		Set<String> keys= map.keySet();
		//1.1 keys를 for each롤
		for(String key : keys) {
			String e= map.get(key);
			System.out.println(e);		
		}
		System.out.println();
		
		//1.2 keys를
		Iterator<String> datas = keys.iterator();
		while (datas.hasNext()) {
			String key= datas.next();
			System.out.println(key + " : " + map.get(keys));			
		}
		System.out.println();
		
		//방법2. Map의 요소들을 Set으로 변경하여 가져오기
		//Map 의 요소(키-벨류 쌍) 객체인 Entry의 Set 얻어오기
		Set<Entry<String, String>> entries=map.entrySet();
		for( Entry<String, String> e : entries )
			System.out.println(e.getKey() + " : " + e.getValue());
	}

}

'JAVA' 카테고리의 다른 글

Runnable  (0) 2023.07.19
Thread(스레드)  (0) 2023.07.19
Collection 클래스들 - Set  (0) 2023.07.18
Colletion 클래스들 - List  (0) 2023.07.18
Java 고급 문법 - Collection 클래스들  (0) 2023.07.18