관리 메뉴

Developer Gonie

[4주차] 70. 컬렉션, Map 인터페이스를 상속받은 HashMap 타입(순서,index X, key는 중복 X, value는 중복 O)*** 본문

K-DigitalTraining 강의/1. Java

[4주차] 70. 컬렉션, Map 인터페이스를 상속받은 HashMap 타입(순서,index X, key는 중복 X, value는 중복 O)***

이대곤 2022. 6. 2. 15:22

* HashMap클래스란?

  Map 인터페이스를 구현하여 만들어진 클래스로, (key, value)의 페어가 1개의 원소이며

  Map의 특징을 그대로 상속받아 key는 중복이 없고, value는 중복 데이터는 존재가 가능하다.

  순서(index)는 없다는 점에서 Set과 비슷함.
  중복되는 key가 존재할 수 없어, key값이 같은 pair를 넣으려고 하면 기존의 것을 덮어씌워버린다.

출처: 생활코딩

* HashMap에서 자주 사용되는 메소드

HashMap<key타입, value타입> hm = new HashMap<key타입, value타입>();

hm.put(key객체, value객체);	// key객체-value객체 페어 추가

hm.get(key객체);		// key객체에 해당하는 value객체 반환

hm.containsKey(key객체)		// key객체 존재여부 true/false 반환

hm.containsValue(value객체)	// value객체 존재여부 true/false 반환

hm.keySet()			// Set 타입으로 모든 key객체 반환

// 확장 for문을 이용한 전체 요소 출력
Set<타입> s = hm.keySet(); // Key에 해당하는 걸 다 가져옴. Key가 String 이었기 때문에 String 으로 지정해준 것.
for(타입 t: s) {
	System.out.print(t + ":" + hm.get(t) + " "); // Key값만 알면 get()으로 Value를 얻을 수 있음
}

key는 String, value는 Integer를 사용한 예시코드

* 컬렉션에 타입을 지정할 땐 클래스로만 할 수 있어서 정수형을 사용하고 싶다면 래퍼클래스 이름을 사용.

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

public class Ex09_09_HashMap {
	public static void main(String[] args) {
		HashMap<String, Integer> hm = new HashMap<String, Integer>(); // key타입, value타입
		
		// add 메서드가 없음
		hm.put("슬기", 30);
		hm.put("조이", 25);
		hm.put("웬디", 12); // 다음 라인에서 덮어띄워져 없어질 데이터
		hm.put("웬디", 30); // Key가 중복되는 것이라 기존의 것을 덮어 씌움
		hm.put("아이린", 25);
		
		System.out.println(hm.size());
		System.out.println(hm); // hm.toString() 
		//[key1=value1, key2=value2, key3=value3, ,,,]
		//HashMap의 toString()은 요소마다 Key의 toString(),Value의 toString()을 각각 호출한다.
		
		System.out.println();
		
		Integer a =  hm.get("조이"); // get은 key에 해당하는 value를 반환함
		System.out.println("Key '조이'의 Value :" + a);
		System.out.println("Key '웬디'의 Value :" + hm.get("웬디"));
		System.out.println();
		
		boolean b = hm.containsKey("웬디"); // 웬디라는 키를 포함하는가?
		System.out.println(b);
		System.out.println(hm.containsKey("이수현"));
		System.out.println();
		
		boolean c = hm.containsValue(12);
		System.out.println(c);
		System.out.println();

		Set<String> s = hm.keySet(); // Key에 해당하는 걸 다 가져옴. Key가 String 이었기 때문에 String 으로 지정해준 것.
		// Set 타입이라 위치번호가 없음
		
		// 위치번호가 없어서 일반 for 문은 불가능.
		for(String t: s) {
			System.out.print(t + ":" + hm.get(t) + " "); // Key값만 알면 get()으로 Value를 얻을 수 있음
		}
		System.out.println();
		
		System.out.println(hm);
	}
}
4
{웬디=30, 슬기=30, 조이=25, 아이린=25}

Key '조이'의 Value :25
Key '웬디'의 Value :30

true
false

false

웬디:30 슬기:30 조이:25 아이린:25 
{웬디=30, 슬기=30, 조이=25, 아이린=25}

 

 

Comments