◆JAVA/자료구조

[Java] HashMap 메소드

쿠키린 2023. 2. 9. 10:56
import java.util.HashMap;
import java.util.Map.Entry;

public class MapTest { //key 값과 value 값 출력하기
	
	public static void main(String[] args) {
		
		HashMap<Integer, String> map = new HashMap<Integer, String>(){{
			put(1,"사과");
			put(2,"바나나");
			put(3,"포도");
		}};
		
		 System.out.println(map); //{1=사과, 2=바나나, 3=포도}
		 System.out.println(map.get(1)); //사과
		 
		 //entrySet() 활용
		 for(Entry<Integer, String> entry : map.entrySet()) {
			 System.out.println("[KEY] : "+entry.getKey() + " [Value] : "+entry.getValue());
		 }
		 
//		 [KEY] : 1 [Value] : 사과
//		 [KEY] : 2 [Value] : 바나나
//		 [KEY] : 3 [Value] : 포도
		 
		 /*
		  * 정리
		  * 1) 특정 key값의 value를 가져오고 싶다면  get(key)를 사용하면 됨
		  * 2) 전체 출력하려고 한다면 entrySet() 또는 keySet() 메소드를 활용하요 Map의 객체를 반환받은 후 출력
		  * 3) entrySet()은 key와 value 모두 필요한 경우 사용
		  * */
		 
		 //KeySet() 활용
		 for(Integer i : map.keySet()) {
			 System.out.println("[Key] : "+i +" [Value] : "+map.get(i));
		 }
		 
		
//		 [Key] : 1 [Value] : 사과
//		 [Key] : 2 [Value] : 바나나
//		 [Key] : 3 [Value] : 포도
		 
		 /*
		  * 4) KeySet()은 key값만 필요할 경우 사용하는데 key값만 받아서 get(key)를 활용하여 value도 출력할 수도 있기에 어떤 메소드를 선택하든지 간에
		  * 큰 상관이 없어 대부분 코드가 간단한 KeySet을 활용하시던데 key값을 이용해서 value를 찾는 과정에서 시간이 많이 소모되고 많은 양의 데이터를 가져ㅑ와야한다면
		  * entrySet()이 좋다(약 20% ~ 200% 성능 저하가 있다)
		  * */

	}
}

 

🔽HashMap의 전체 출력 시 반목문을 사용하지 않고 Interator를 사용해도된다.

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class MapIterator {

	public static void main(String[] args) {

		//HashMap의 전체 출력 시 반목문을 사용하지 않고 Interator를 사용해도된다.
		HashMap<Integer, String> map = new HashMap<Integer, String>(){{
			put(1,"사과");
			put(2,"바나나");
			put(3,"포도");
		}};
		
		//entrySet().iterator()
		Iterator<Entry<Integer, String>> entries = map.entrySet().iterator();
		while(entries.hasNext()) {
			Map.Entry<Integer, String> entry = entries.next();
			System.out.println("[Key]: "+entry.getKey() + " [Value]: "+entry.getValue());
		}
		
//		[Key]: 1 [Value]: 사과
//		[Key]: 2 [Value]: 바나나
//		[Key]: 3 [Value]: 포도
		
		
		
		
		//KeySet().iterator()
		Iterator<Integer> keys = map.keySet().iterator();
		while(keys.hasNext()) {
			int key = keys.next();
			System.out.println("[Key] : "+key+ " [Value]: "+map.get(key));
		}
		
//		[Key] : 1 [Value]: 사과
//		[Key] : 2 [Value]: 바나나
//		[Key] : 3 [Value]: 포도

	}

}​