반복문을 이용하여 HashMap의 모든 요소를 순회하면서 특정 조건을 만족하는 요소들만 새로운 Map에 추가하여 필터링할 수 있습니다.
import java.util.*;
public class Example {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
map.put(-2, "a1");
map.put(-1, "a2");
map.put(-0, "b1");
map.put(1, "b2");
map.put(2, "c1");
Map<Integer, String> filtered = new HashMap<>();
for (Map.Entry<Integer, String> entry: map.entrySet()) {
if (entry.getKey() >= 0) {
filtered.put(entry.getKey(), entry.getValue());
}
}
System.out.println(filtered);
}
}
Output:
{0=b1, 1=b2, 2=c1}
만약 value의 조건으로 필터링을 하고 싶을 때는, 아래와 같이 Entry의 value에 대해서 조건식을 구현하면 됩니다.
Map<Integer, String> filtered = new HashMap<>();
for (Map.Entry<Integer, String> entry: map.entrySet()) {
if (entry.getValue().startsWith("b")) {
filtered.put(entry.getKey(), entry.getValue());
}
}
System.out.println(filtered);
Output:
{0=b1, 1=b2}
HashMap.entrySet()은 요소들을 Entry들의 Set로 리턴합니다.
Entry들의 Stream을 만들고, filter()를 사용하여 특정 조건을 만족하는 요소들만 새로운 Map에 추가할 수 있습니다.
import java.util.*;
import java.util.stream.Collectors;
public class Example1 {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
map.put(-2, "a1");
map.put(-1, "a2");
map.put(-0, "b1");
map.put(1, "b2");
map.put(2, "c1");
Map<Integer, String> filtered = map.entrySet().stream()
.filter(entry -> entry.getKey() >= 0)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
System.out.println(filtered);
}
}
Output:
{0=b1, 1=b2, 2=c1}
만약 value에 대한 조건으로 필터링을 하고 싶다면, 아래와 같이 value에 대한 조건식을 구현하면 됩니다.
Map<Integer, String> filtered = map.entrySet().stream()
.filter(entry -> entry.getValue().startsWith("b"))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
System.out.println(filtered);
Output:
{0=b1, 1=b2}
[자바] 리스트 역순 순회 (0) | 2023.04.12 |
---|---|
[싱글톤] 싱글톤 패턴 구현 (0) | 2023.04.12 |
[스트림] reduce 사용법 및 예제 (0) | 2023.04.12 |
[람다식] 람다식 사용법 및 예제 (0) | 2023.04.12 |
[스트림]스트림부수기 (0) | 2023.04.12 |
댓글 영역