그 외 ... (정리해야함)/꿀팁
[JAVA] Stream을 이용한 이중 for문
깡냉쓰
2019. 8. 5. 23:08
728x90
반응형
Stream을 이용한 2중 for문
우리는 2중 for문을 종종 사용해야할 때가 있다.
Stream을 이용하여 2중 for문을 구현해보자.
상황
public static void main(String[] args) {
List<String> list1 = Arrays.asList("a", "b", "c", "d", "e");
List<String> list2 = Arrays.asList("a", "b", "d");
// 2중 for문은 stream으로 어떻게 작성할까?
// 만약 for문을 돌면서 같은 것만 list에 담고 싶다면?
// 8버전 이전
List<String> result1 = new ArrayList<>();
for(String str1 : list1){
for(String str2 : list2){
if(str1.equals(str2)){
result1.add(str1);
}
}
}
for(String str : result1){
System.out.print(str);
}
System.out.println();
// 8버전 (stream 이용)
List<String> result2 =
list1.stream()
.filter(str -> list2.stream().anyMatch(Predicate.isEqual(str)))
.collect(Collectors.toList());
result2.stream().forEach(System.out::print);
}
filter 메소드를 사용하여 중간처리를 한다.
stream의 xxxMatch메소드를 이용하여 매칭되는 element를 찾는다.
- noneMatch => 불일치 데이터 필터링
- anyMatch => 일치 데이터 필터링
- allMatch => 모두 일치하는 데이터 필터링
세 가지 Match가 존재한다.
728x90
반응형