SeouliteLab

[Java/자바] 특정 조건으로 HashMap 필터링하기 본문

프로그래밍

[Java/자바] 특정 조건으로 HashMap 필터링하기

Seoulite Lab 2024. 3. 7. 09:06

Java에서는 HashMap을 사용하여 키-값 쌍을 저장하고 관리할 수 있습니다. 때로는 특정 조건에 따라 HashMap을 필터링하여 필요한 요소만 추출해야 할 때가 있습니다. 이를 위해 Java에서는 다양한 방법을 제공합니다. 아래에서는 HashMap을 특정 조건으로 필터링하는 여러 가지 방법을 예제와 함께 알아보겠습니다.

예제 1: 기본 for 루프를 사용한 필터링

import java.util.HashMap;
import java.util.Map;

public class FilteringHashMapExample {
    public static void main(String[] args) {
        Map<String, Integer> hashMap = new HashMap<>();
        hashMap.put("A", 10);
        hashMap.put("B", 20);
        hashMap.put("C", 30);
        
        Map<String, Integer> filteredMap = new HashMap<>();
        for (Map.Entry<String, Integer> entry : hashMap.entrySet()) {
            if (entry.getValue() > 15) {
                filteredMap.put(entry.getKey(), entry.getValue());
            }
        }
        
        System.out.println("조건을 만족하는 요소: " + filteredMap);
    }
}

위 예제는 기본적인 for 루프를 사용하여 HashMap을 필터링하는 방법입니다. 주어진 조건에 따라 값을 비교하고, 조건을 만족하는 요소만 새로운 HashMap에 추가합니다.

예제 2: Stream API를 사용한 필터링

import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;

public class FilteringHashMapExample {
    public static void main(String[] args) {
        Map<String, Integer> hashMap = new HashMap<>();
        hashMap.put("A", 10);
        hashMap.put("B", 20);
        hashMap.put("C", 30);
        
        Map<String, Integer> filteredMap = hashMap.entrySet().stream()
                                        .filter(entry -> entry.getValue() > 15)
                                        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
        
        System.out.println("조건을 만족하는 요소: " + filteredMap);
    }
}

Java 8부터는 Stream API를 사용하여 간단하게 HashMap을 필터링할 수 있습니다. filter() 메서드를 사용하여 주어진 조건에 따라 요소를 필터링한 후, collect() 메서드로 필터링된 요소를 새로운 Map으로 수집합니다.

예제 3: Apache Commons Collections 라이브러리를 사용한 필터링

import org.apache.commons.collections4.CollectionUtils;

import java.util.HashMap;
import java.util.Map;

public class FilteringHashMapExample {
    public static void main(String[] args) {
        Map<String, Integer> hashMap = new HashMap<>();
        hashMap.put("A", 10);
        hashMap.put("B", 20);
        hashMap.put("C", 30);
        
        Map<String, Integer> filteredMap = CollectionUtils.selectMap(hashMap,
                                                    (key, value) -> value > 15);
        
        System.out.println("조건을 만족하는 요소: " + filteredMap);
    }
}

Apache Commons Collections 라이브러리의 CollectionUtils 클래스를 사용하여 HashMap을 필터링하는 방법입니다. selectMap() 메서드를 사용하여 주어진 조건에 따라 요소를 필터링한 후, 새로운 Map으로 반환합니다.