JAVA/java

[JAVA] 컬렉션 프레임워크 : Map (순서X, key중복X/Value중복O)

congs 2023. 3. 26. 13:35

📌 Map

  • 값을 두개 저장, key / value 쌍으로 저장
  • key는 중복이 불가
  • value 는 중복가능
  • key가 중복되면 덮어쓰기가 됨
    • 아이디/ 패스워드처럼 하나의 자료로 저장해야 할 경우에 사용

✔ entrySet() :

대괄호로 map을 보여줌 System.out.println(map.entrySet());

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

public class Map01 {

	public static void main(String[] args) {
		/* Map
		 * - 값을 2개 저장  key/ value 값으로 저장
		 * - key는 중복불가, value는 중복가능
		 * - HashMap을 가장 많이 사용
		 * 
		 * HashMap<String, Integer> map = new HashMap<String, Interger>();
		 * Map운 값이 2개여서 Iterator를 사용할 수 없음
		 * Map = Set으로 변경 후 출력
		 * 
		 * 
		 *<추가방법>
		 * list, set=> .add();
		 * map=> .put();
		 * 
		 * <추출방법>
		 * getKey / getValue
		 * 
		 * */
		HashMap<String, Integer> map = new HashMap<>();
		map.put("햄버거", 7000);
		map.put("피자", 15000);
		map.put("음료", 2000);
		map.put("과자", 2000);
		map.put("사탕", 500);
		map.put("사탕", 700);
		
		System.out.println(map); //순서x, key가 같으면 먼저있던 값 사라짐 (value는 상관x)
		System.out.println(map.keySet());//key값
		System.out.println(map.values());//value 값
		
		//key = 햄버거인 값 출력 (key값을 index라고 생각하셈!)
		System.out.println(map.get("햄버거"));
		
		//요소 출력(key기준) - key를 가지고 value에 접근
		System.out.println("=====Iterator=====");
		Iterator<String> it = map.keySet().iterator();
		while(it.hasNext()) {
			String key = it.next();
			System.out.println(key+ ": " + map.get(key));
		}
		
		System.out.println("=====향상된 for문=====");
		for(String tmp : map.keySet()) {
			System.out.println(tmp+ ": "+ map.get(tmp));
		}
		
		//entrySet() : 대괄호로 map을 보여줌 (대괄호 = 2가지의 값을 가진 map임을 보여줌)
		System.out.println(map.entrySet());
		
		for(Map.Entry<String, Integer> tmp : map.entrySet()) {
			System.out.println(tmp.getKey()+ ": " + tmp.getValue());
		}
		
		
		//총가격 출력
		int sum = 0;
		for(String tmp : map.keySet()) {
			sum += map.get(tmp);
		}
		System.out.println("총 합계는 " + sum);

	}

}

 

✔ 사용

  • boolean remove(Object key, Object Value) : key,key의 Value가 일치하면 삭제
  • remove(key) : key가 있으면 삭제
  • boolean containsKey(Key) : 해당 key가 있으면 true
  • boolean containsValue(Value) : 해당 value가 있으면 true