728x90
반응형
SMALL
Filter
스트림내 요소에 대해서 필터링하는 작업
준비하기
java stream을 사용하는데 아직 미숙한것 같아서 여러가지 예제를 사용해보며 연습해보자.
- sample data (Human)
1 | jojae | 2900 | 1991-02-26 |
2 | haha | 1000 | 2003-03-02 |
3 | arabia | 30000 | 2001-04-06 |
4 | cici | 150 | 1982-05-16 |
5 | zzang | 40000 | 1910-06-26 |
6 | ssu | 200000 | 2012-07-11 |
7 | kuku | 150 | 1991-02-27 |
public class Human {
private Long idx;
private String name;
private Integer money;
private LocalDate birth;
}
기본 사용법
@DisplayName("이름이 zzang인 사람")
void filterTest1() {
Human human = humans.stream()
.filter(h -> h.getName().equals("zzang"))
.findFirst()
.orElseThrow(() -> new IllegalArgumentException());
System.out.println(human.getIdx());
}
- 결과
5
메소드 참조 사용법
이름이 zz로 시작하는 사람을 찾을때
h -> h.getName().startsWith("zz")
대신
Human::isNameStartwithZz
이렇게 해당 메소드가 정의되어있다면 메소드 참조를 사용해서 간략하게 필터링 가능
@DisplayName("이름이 zz로 시작하는 사람(메소드 참조 사용)")
void filterTest2() {
Human human = humans.stream()
.filter(Human::isNameStartwithZz)
.findFirst()
.orElseThrow(() -> new IllegalArgumentException());
System.out.println(human.getIdx());
}
- 결과
5
조건에 맞는 여러요소 가져오기
findFirst() 는 조건에맞는 첫번째 요소를 가져오지만
전부를 가져오고 싶으면 사용하지 않으면됨.
collect(Collectors.toList());
를 이용해서 List로 반환 가능.
@DisplayName("돈이 2000원 이상인 사람 전부")
void filterTest3() {
List<Human> tmpHumans = humans.stream()
.filter(h -> h.getMoney() > 2000)
.collect(Collectors.toList());
for (Human human : tmpHumans) {
System.out.println(human.getIdx());
}
}
- 결과
1 3 5 6
여러조건에 맞는 여러요소 가져오기
@DisplayName("이름이 zzang이고 돈이 2000원 이상인 사람")
void filterTest4() {
List<Human> tmpHumans = humans.stream()
.filter(h -> "zzang".equals(h.getName()) && h.getMoney() > 2000)
.collect(Collectors.toList());
for (Human human : tmpHumans) {
System.out.println(human.getIdx());
}
}
- 결과
5
참조 : https://isntyet.github.io/java/java-stream-%EC%A0%95%EB%A6%AC(filter)
728x90
LIST
'백엔드' 카테고리의 다른 글
[리눅스] vi편집기 사용법,명령어 정리 (1) | 2023.10.07 |
---|---|
[Web] Web Server와 WAS의 차이 (0) | 2023.09.12 |
[Java] Stream API란 - fiter /map /of (0) | 2023.06.27 |
[Spring Framework] server.xml 에 대하여 알아보자 (1) | 2023.06.06 |
[Spring Boot] pom.xml 파일에 관하여 알아보자 (0) | 2023.06.06 |