entry (엔트리)
: Map의 키(Key)와 값(value)의 쌍 하나하나를 말한다.
Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
// 내부적으로는 다음과 같은 entry로 저장된다.
// Entry: "apple" = 1
entrySet()
: map.entrySet()은 Map의 모든 엔틀들을 Set으로 반환하는 메소드이다.
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
// entry.getKey() -> key값
// entry.getValue() -> value 값
}
keySet()
for (String key : map.keySet()) {
System.out.println("Key = " + key);
}
values()
for (Integer value : map.values()) {
System.out.println("Value = " + value);
}
Map.forEach() + 람다식
map.forEach((key, value) -> {
System.out.println("Key = " + key + ", Value = " + value);
})
스트림 방식
// 1. Map을 entrySet().stream() 으로 반복 처리
map.entrySet().stream()
.forEach(entry -> System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()));
// 2. 특정 조건으로 필터링 (예: 값이 2 이상인 항목만)
map.entrySet().stream()
.filter(entry -> entry.getValue() >= 2)
.forEach(entry -> System.out.println(entry.getKey() + " = " + entry.getValue()));
// 3. 정렬하기 (키 또는 값 기준)
// 키 기준
map.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.forEach(entry -> System.out.println(entry.getKey() + " = " + entry.getValue()));
// 값 기준
map.entrySet().stream()
.sorted(Map.Entry.comparingByValue())
.forEach(entry -> System.out.println(entry.getKey() + " = " + entry.getValue()));
// 4. 값만 추출해서 리스트로 만들기
map.entrySet().stream()
.sorted(Map.Entry.comparingByValue())
.forEach(entry -> System.out.println(entry.getKey() + " = " + entry.getValue()));
// 5. Map을 필터링해서 새 Map 만들기
Map<String, Integer> filteredMap = map.entrySet().stream()
.filter(entry -> entry.getValue() >= 2)
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue
));
작업 | 방법 |
기본 반복 | map.entrySet().stream() |
필터링 | .filter(entry -> 조건) |
정렬 | .sorted(comparingByKey / Value) |
새 Map 만들기 | .collect(Collectors.toMap()) |
728x90
'Java' 카테고리의 다른 글
[Java] Queue의 add/offer, remove/poll, element/peek 의 차이 (0) | 2025.05.03 |
---|---|
[Java] 접근 제어자 (0) | 2025.05.03 |
[Java] LinkedHashMap과 HashMap의 차이 (0) | 2025.05.01 |
[Java] 스택 - LinkedList / Deque / Stack (0) | 2025.05.01 |
[Java] 컬렉션(collection) (컨테이너(container)) (0) | 2025.04.29 |