728x90
Map
키(key)와 값(value)으로 구성된 객체(Entry)를 저장하는 구조
-> 키와 값으로 구성된 엔트리 객체가 모여있는 구조
- 키는 중복 저장이 불가능하다 -> 값을 식별하기 위해
- 값은 중복 저장이 가능하다
- HashMap, Hashtable, TreeMap, SortedMap 등
기능 | 리턴 타입 | 메서드 | 설명 |
객체 추가 | Object | put (Object key, Object value) |
주어진 키로 값을 저장합니다. 해당 키가 새로운 키일 경우 null을 리턴하지만, 동일한 키가 있을 경우에는 기존의 값을 대체하고 대체되기 이전의 값을 리턴합니다. |
객체 검색 | boolean | containsKey (Object key) |
주어진 키가 있으면 true, 없으면 false를 리턴합니다. |
boolean | containsValue (Object value) |
주어진 값이 있으면 true, 없으면 false를 리턴합니다. | |
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를 삭제하고 값을 리턴합니다. |
HashMap
- Map 인터페이스를 구현한 대표적인 클래스
- '키'와 '값'으로 저장되는 위치가 결정되므로 사용자는 그 위치를 알 수 없으며, 삽입되는 순서와 위치 또한 관계가 없다
- 많은 양의 데이터를 검색하는 데 특화
리턴 타입 | 메서드 | 설명 |
boolean | equals(Object o) | 동일한 Entry 객체인지 비교합니다. |
Object | getKey() | Entry 객체의 Key 객체를 반환합니다. |
Object | getValue() | Entry 객체의 Value 객체를 반환합니다. |
int | hashCode() | Entry 객체의 해시코드를 반환합니다. |
Object | setValue(Object value) | Entry 객체의 Value 객체를 인자로 전달한 value 객체로 바꿉니다. |
HashMap을 사용할 때는 키와 값의 타입을 지정해주어야 한다
HashMap<String, Integer> hashmap = new HashMap<>();
import java.util.*;
public class Main {
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();
}
}
728x90
'개발일지 > Java' 카테고리의 다른 글
Java 람다식 (Lambda Expression (0) | 2022.09.19 |
---|---|
Java 애너테이션 (Annotation) (0) | 2022.09.19 |
Java Set<E>, HashSet, TreeSet (0) | 2022.09.17 |
Java Iterator (0) | 2022.09.17 |
Java List<E>, ArrayList, LinkedList (1) | 2022.09.14 |