** 자기 공부용 및 암기용으로 포스팅하는 글 입니다.
** 정확한 정보는 보장 할 수 없으니, 참고용으로만 봐주시면 감사하겠습니다.
** 제 개인적인 생각 및 자기 암시목적으로 작성되기에 이점 양해 부탁드립니다.
들어가기에 앞서..
어쩌다 보니 포스팅 순서가 뒤죽박죽이 되어버렸다..
Map은 JAVA나 SPRING에서 많이 쓰이는 Collection 프레임워크이다.
값과 쌍을 저장 할 수 있기에 많이 쓰이니 꼭 알아두고 가자.
★ 알아볼 내용
1. Map의 정의 및 저장 방식
2. Map 공통 메서드
3. HashMap 메서드
내용 설명
1. Map의 정의 및 저장 방식
맵은 위 머릿말 글과 같이 키(Key)와 값(value)으로 구성된 객체를 저장하는 구조로 되어있다.
이 객체를 Entry객체라고 하는데 이 entry객체는 키와 값을 각각 key 객체와 value 객체로 저장한다.
Map을 사용할때 Key는 중복으로 저장될 수 없는 특징을 가지고 있다.
그에 반해 value는 중복 저장이 가능하다.
마치 데이터베이스에서 일반 value와 Primary Key와 비슷한 개념으로 생각하면 되겠다.
만약 기존에 저장된 키와 같은 키로 값을 저장하게 될 경우 기존의 값이 새로운 값으로 대체 된다.
2. Map 공통 메서드
Map 인터페이스를 구현한 클래스에서 공통으로 사용할 수 있는 메서드는 아래와 같다.
List가 인덱스를 기준으로 관리되는 반면에, Map은 키(key)로 객체들을 관리하기 때문에 키를 매개값으로 갖는 메서드가 많다.
기능 | Return Type | Method | Info |
객체 추가 | Object | put(Object Key, Object value) | 주어진 키로 값을 저장. 해당 키가 새로운 키일 경우 null을 리턴. 같은 키가 있으면 기존의 값을 대체하고 대체 되기 이전의 값을 리턴합니다. |
객체 검색 | boolean | containsKey(Object key) | 주어진 키가 있으면 true, 없으면 false를 리턴 |
boolean | containsValue(Object value) | ||
Set | entrySet() | 키와 값의 쌍으로 구성된 모든 Map.Entry 객체를 Set에 담아서 리턴 | |
Object | get(Object key) | 주어진 키에 해당하는 값을 리턴 | |
boolean | isEmpty() | 컬렉션이 비어 있는지 확인 | |
Set | keySet() | 모든 키를 Set객체에 담아서 리턴 | |
int | size() | 저장된 Entry 객체의 총 갯루를 리턴 | |
Collection | values() | 저장된 모든 값을 Collection에 담아서 리턴 | |
객체 삭제 | void | clear() | 모든 Map.Entry(키와 값)을 삭제합니다. |
Object | remove(Object key) | 주어진 키와 일치하는 Map.Entry를 삭제하고 값을 리턴. |
3. HashMap 메서드
HashMap은 Map 인터페이스를 구현한 대표적은 클래스.
HashMap은 해시 함수를 통해 Key와 Value가 저장되는 위치를 결정하므로, 사용자는 그 위츠를 알수 없으며 삽입되는 순서와 위치 또한 관계가 없다.
해싱 함수를 사용하기에 많은 양의 데이터를 검색하는데 빠른 속도를 보인다.
Return Type | Method | Info |
boolean | equals(Object o) | 동일한 Entry 객체인지 비교 |
Object | getKey() | Entry 객체의 Key 객체를 반환 |
Object | ghetValue() | Entry 객체의 Value 객체를 반환 |
int | hashCode() | Entry 객체의 해시코드를 반환 |
Object | setValue(Object value) | Enmtry 객체의 Value 객체를 인자로 전달한 value객체로 바꿈 |
HashMap을 사용하는 예시를 한번 봐 보자
import java.util.*;
public class HashMapExample {
public static void main(String[] args) {
// HashMap 생성
HashMap<String, Integer> map = new HashMap<>();
// Entry 객체 저장
map.put("피카츄", 85);
map.put("꼬부기", 95);
map.put("야도란", 75);
map.put("파이리", 65);
map.put("피존투", 15);
// 저장된 총 Entry 수 얻기
System.out.println("총 entry 수: " + map.size());
// 객체 찾기
System.out.println("파이리 : " + map.get("파이리"));
// key를 요소로 가지는 Set을 생성 -> 아래에서 순회하기 위해 필요합니다.
Set<String> keySet = map.keySet();
// keySet을 순회하면서 value를 읽어옵니다.
Iterator<String> keyIterator = keySet.iterator();
while(keyIterator.hasNext()) {
String key = keyIterator.next();
Integer value = map.get(key);
System.out.println(key + " : " + value);
}
// 객체 삭제
map.remove("피존투");
System.out.println("총 entry 수: " + map.size());
// Entry 객체를 요소로 가지는 Set을 생성 -> 아래에서 순회하기 위해 필요합니다.
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
// entrySet을 순회하면서 value를 읽어옵니다.
Iterator<Map.Entry<String, Integer>> entryIterator = entrySet.iterator();
while(entryIterator.hasNext()) {
Map.Entry<String, Integer> entry = entryIterator.next();
String key = entry.getKey(); // Map.Entry 인터페이스의 메서드
Integer value = entry.getValue(); // Map.Entry 인터페이스의 메서드
System.out.println(key + " : " + value);
}
// 객체 전체 삭제
map.clear();
}
}
Map은 키와 값을 쌍으로 저장하기 때문에 iterator()를 직접 호출하여 사용할 수 없다.
대신 KeySet()이나 entrySet() 메서드를 이용하여 Set형태로 반환된 컬렉션에 iterator()를 호출하여 반복자를 만들어 순회하는 방식으로 진행된다.
'JAVA 지식 및 공부' 카테고리의 다른 글
[JAVA] Collection : Iterator (0) | 2024.06.15 |
---|---|
[JAVA] 객체지향 프로그래밍 : 다형성 (1) | 2024.06.11 |
[JAVA] 객체지향 프로그래밍 : 추상화 (0) | 2024.06.10 |
[JAVA] 객체지향 프로그래밍 : 캡슐화 (0) | 2024.06.09 |
[JAVA] 객체지향 프로그래밍 : 상속 (1) | 2024.06.07 |