Java

Java) 컬렉션 프레임워크 : HashMap 활용 예제

pogun 2025. 1. 13. 18:39

HashMap이란?

: 컬렉션 프레임워크에서 제공하는 데이터 구조로, 키(key)와 값(value)의 쌍으로 데이터를 저장하는 클래스

: web으로 가면 이게 Json이 된다.

 

특징 : 

1. 키-값(Key-Value) 구조 : 데이터를 키와 값의 쌍으로 저장하며, 각 키는 고유(unique)해야 한다. 값은 중복 허용

2. 해싱(Hashing) : 내부적으로 데이터를 해싱(Hashing) 기법을 통해 저장하여 효율적인 검색 및 삽입 성능을 제공

3. 순서 없음 : 데이터는 입력 순서와 관계없이 저장된다.

4. NULL 허용 : 

: 키는 최대 하나의 null 값을 허용

: 값은 여러 개의 null 값을 허용

 

주요 메서드 : 

1. put(K key, V value) : 키와 값을 추가

2. get(Object key) : 특정 키에 대한 값을 반환

3. remove(Object key) : 특정 키-값 쌍을 삭제

4. size() : 저장된 키-값 쌍의 개수를 반환

5. containsKey(Object key) : 특정 키가 존재하는지 확인

6. containsValue(Object value) : 특정 값이 존재하는지 확인

7. keySet() : 저장된 모든 키를 반환

8. replace(K key, V value) : 특정 키의 값을 새로운 값으로 수정


객체 생성 방법(Integer, String)

HashMap<Integer, String> hMap = new HashMap<>();
Map<Integer, String> map = new HashMap<>();

: 2가지 생성 방법 중 편한 방법 사용

추가

map.put(111, "백십일");
map.put(222, "이백이십이");
map.put(333, "삼백삼십삼");
// map.put(new Integer(444), new String("사백사십사")); 사용 안해도 되는 예

Map 크기 확인

System.out.println(map.size());

key를 통해서 값을 취득

String value = map.get(333);  // 출력 : 삼백삼십삼
System.out.println(value);    // key : value가 이런 느낌

모두 출력

Iterator it = map.keySet().iterator();  // 잴 처음에 있는 주소값을 넣어준다.
while (it.hasNext()){   // 다음을 갖고있냐는 의미 / 안갖고있으면 산출
    // key 취득
    Integer key2 = (Integer) it.next();  // 그냥 생성 시 Object 타입이라 형변환 시킴
    String value2 = map.get(key2);
    System.out.println("key: " + key2 + " value: " + value2);

}

Iterator : 반복자를 의미

: 형변환도 꼭 시켜줘야 한다.

삭제

String reValue = map.remove(222); // key값 넣어줌
System.out.println("삭제된 값 : " + reValue);

검색

 boolean b = map.containsKey(333);{
    String val = map.get(333);
    System.out.println(val);
}

수정

String str = "300 + 30 + 3";
map.replace(333, str);

객체 생성 방법(String, String)

Map<String, String> fruitMap = new HashMap<>();
// 과일
// 추가
fruitMap.put("숭", "복숭아");
fruitMap.put("박", "수박");
fruitMap.put("규", "귤");

String val2 = fruitMap.get("숭");
System.out.println(val2);

// 삭제
String reVal2 = fruitMap.remove("규");
System.out.println(reVal2);

Iterator<String> itt = fruitMap.keySet().iterator();  // 잴 처음에 있는 주소값을 넣어준다.
while (itt.hasNext()){   // 다음을 갖고있냐는 의미 / 안갖고있으면 산출
    // key 취득
    String key2 = (String) itt.next();  // 그냥 생성 시 Object 타입이라 형변환 시킴
    String value2 = fruitMap.get(key2);
    System.out.println("key: " + key2 + " value: " + value2);
}

// 검색
boolean b = fruitMap.containsKey("숭");{
    String val = fruitMap.get("숭");
    System.out.println(val);
}

// 수정
String str = "복숭아랑 수박이 잴 맛있다.";
fruitMap.replace("숭", str);

itt = fruitMap.keySet().iterator();  // 잴 처음에 있는 주소값을 넣어준다.
while (itt.hasNext()){   // 다음을 갖고있냐는 의미 / 안갖고있으면 산출
    // key 취득
    String key2 = (String) itt.next();  // 그냥 생성 시 Object 타입이라 형변환 시킴
    String value2 = fruitMap.get(key2);
    System.out.println("key: " + key2 + " value: " + value2);
}

: 위에 하나씩 다 설명이 있어서 전체 코드를 넣었음

: 그렇게 어려운 부분은 아니라고 생각한다!

: 어떻게 사용되는지 사용법 정도만 알면 활용할 수 있을 듯하다.