
Map은 key-value 방식을 사용하여 대응관계를 쉽게 표현 할 수 있는 자료형이다.
Map은 리스트나 배열처럼 순차적으로(sequential) 요솟값을 구하지 않고 키(key)를 이용해 값(value)을 얻는다.
Map은 배열처럼 순차적인 데이터 처리를 하지 않고 순서를 유지하지 않는다
DB의 pk같이 key는 중복을 허용하지 않지만 value는 중복이 가능하다.
1. 개요
1-1. HashMap으로 생성한 Map의 모든 값을 출력.
1-2. 여러가지 함수를 사용하여 실습.
- entrySet()
- keySet(), get()
- values()
- forEach() ※Java 8버전 이상 사용가능
2. 실습
2-1. 비즈니스 처리에 사용될 Map
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "val1");
map.put(2, "val2");
map.put(3, "val3");
2-2. entrySet()
entrySet() 함수로 Entry를 리턴 받아 getkey(), getValue() 함수를 사용한다.
for (Entry<Integer, String> entrySet : map.entrySet()) {
System.out.println("key="entrySet.getKey() + " :: value=" + entrySet.getValue());
}
// result
// key=1 :: value=val1
// key=2 :: value=val2
// key=3 :: value=val3
2-3. keySet(), get()
keySet() 함수로 모든 키를 Set으로 리턴받아 Map에서 get()으로 찾는다.
for (Integer key : map.keySet()) {
System.out.println("key="key + " :: value=" + map.get(key));
}
// result
// key=1 :: value=val1
// key=2 :: value=val2
// key=3 :: value=val3
2-4. values()
value만 필요한 경우 values() 함수로 Collection을 리턴 받는다.
Collection<String> values = map.values();
System.out.println(values);
// result
// [val1,val2,val3]
2-5. forEach()
map을 순차 탐색하여 key, value를 받는다. 람다 활용
map.forEach((key, value) -> {
System.out.println("key="key + " :: value=" + map.get(key));
});
// result
// key=1 :: value=val1
// key=2 :: value=val2
// key=3 :: value=val3
3. 결론
정형화된 class의 매개변수나 리턴값은 내용을 유추할 수 있으나 Map은 그렇지 못한 경우가 있다.
이럴 때 Map의 전체 데이터를 출력해 보자
'Java' 카테고리의 다른 글
| [Java] 자바 AtomicLong의 사용과 멀티 스레드 (0) | 2023.11.26 |
|---|---|
| [Java] 자바 LocalDatetime, LocalDate, LocalTime 시간 API (0) | 2023.11.26 |
| [Java] NPE(NullPointerException)에 대하여(String NPE) (0) | 2023.09.29 |
| [Java]자바 스트림(Stream API)과 for 그리고 배열(Array) 처리 (0) | 2023.09.28 |
| 자바 8 Version(1.8) 정리 (0) | 2023.09.27 |