반응형
Map 에서 특정 키만 유지하는 방법
Map의 키 집합은 keySet() 메서드를 통해 반환된다.
이 set은 map과 연결되어 있어 set의 변경은 map에도 반영된다.
retainAll() 메서드는 Collection 인터페이스의 메서드로, 현재 컬렉션에서 주어진 컬렉션에서 포함된 요소만 유지하고 나머지는 제거한다.
따라서 Map에서 특정 키만 남기고 나머지를 제거하고 싶으면 ketSet() 메서드와 retailnAll() 메서드를 함께 사용하면 된다.
예시
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class RetainKeysExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);
map.put("cherry", 3);
map.put("date", 4);
// 유지할 키들을 정의합니다.
Set<String> keysToRetain = new HashSet<>();
keysToRetain.add("apple");
keysToRetain.add("cherry");
// map의 키셋에서 keysToRetain에 있는 키만 남기고 나머지는 제거합니다.
map.keySet().retainAll(keysToRetain);
// 결과 출력
System.out.println(map); // {apple=1, cherry=3}
}
}
반응형
추가적으로,
Map A와 B가 있을때, A에만 존재하는 키-밸류를 B에 추가하고 싶을 때
예시
import java.util.HashMap;
import java.util.Map;
public class MapUpdateExample {
public static void main(String[] args) {
// 예제용 Map A와 B 생성
Map<String, Integer> mapA = new HashMap<>();
mapA.put("one", 1);
mapA.put("two", 2);
mapA.put("three", 3);
Map<String, Integer> mapB = new HashMap<>();
mapB.put("two", 2);
mapB.put("four", 4);
// A에서 B에 없는 부분만 B에 추가하는 메서드 호출
addMissingEntries(mapA, mapB);
// 결과 출력
System.out.println("Updated Map B: " + mapB);
}
public static void addMissingEntries(Map<String, Integer> source, Map<String, Integer> target) {
for (Map.Entry<String, Integer> entry : source.entrySet()) {
// B에 없는 키만 B에 추가
if (!target.containsKey(entry.getKey())) {
target.put(entry.getKey(), entry.getValue());
}
}
}
}
반응형
'Programming > Java' 카테고리의 다른 글
java.util.Map 과 Map.Entry<K, V> 인터페이스 (0) | 2024.07.30 |
---|---|
[java] String과 getBytes 메소드 (0) | 2019.07.01 |
[Java] 이클립스 UTF-8 BOM 제거하기 (0) | 2019.06.27 |
리눅스 정규식 (0) | 2016.12.27 |
JAVA File 삭제 (폴더 안의 파일 모두 삭제) (0) | 2016.12.20 |