반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- fotmatter
- auto configuration
- Save Action
- JsonType
- 쓰레드 안전
- gradle
- Starter
- JsonStringType
- 개방/폐쇄 원칙
- AOP
- Stream
- findAny
- AccessLevel
- java
- LogInterceptor
- ClientHttpRequestInterceptor
- spring
- jpa
- Thread Safety
- RestTemplate
- ResponseBodyAdvice
- restTemple
- AOP 매개변수
- AOP this
- AOP target
- Spring Boot
- @AutoConfiguration
- findFirst
- vaultTemplate
- 포맷터
Archives
- Today
- Total
맨땅에 헤딩하는 개바른자
[Java] Stream > foreach 본문
반응형
git
https://github.com/ymwoo88/stream/tree/feature/foreach-%EC%98%88%EC%A0%9C
설명
제공된 action을 Stream의 각 데이터에 적용해주는 종결 처리 메서드입니다.
Java의 iterable 인터페이스에도 forEach가 있기 때문에 Stream의 중간 처리가 필요없다면 굳이 Stream을 만들어 사용할 필요는 없습니다.
foreach
모든 요소가 처리되거나 작업이 예외를 throw할 때까지 Iterable의 각 요소에 대해 지정된 작업을 수행합니다.
해당 순서가 지정된 경우 작업은 반복 순서대로 수행됩니다. 작업에 의해 발생한 예외는 호출자에게 전달됩니다.
재정의 클래스가 동시 수정 정책을 지정하지 않는 한 작업이 요소의 기본 소스를 수정하는 부작용을 수행하는 경우 이 메서드의 동작은 지정되지 않습니다. Params: action
– 각 요소에 대해 수행할 작업
예외: NullPointerException
– 지정된 작업이 null인 경우 구현 요구
사항: 기본 구현은 다음과 같이 작동합니다.
for (T t : this) action.accept(t); 이후: 1.8
void forEach(Consumer<? super T> action);
예제
- 샘플 데이터
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class User {
private Long id;
private String name;
private String email;
private Integer age;
private Boolean isWorking;
private List<String> hobbies;
public static User getUserAmil() {
return User.builder()
.id(1L)
.name("amil")
.email("amil@ymwoo.com")
.age(28)
.isWorking(true)
.hobbies(List.of("골프", "영화감상"))
.build();
}
public static User getUserBenny() {
return User.builder()
.id(2L)
.name("benny")
.email("benny@ymwoo.com")
.age(26)
.isWorking(true)
.hobbies(List.of("골프", "낚시"))
.build();
}
public static User getUserCho() {
return User.builder()
.id(3L)
.name("cho")
.email("cho@ymwoo.com")
.age(33)
.isWorking(false)
.hobbies(List.of("등산", "캥핌"))
.build();
}
public static List<User> getExamUserList() {
return Arrays.asList(getUserAmil(), getUserCho(), getUserBenny());
}
@Override
public boolean equals(Object o) {
if (o instanceof User) {
return this.isWorking.equals(((User) o).getIsWorking()); // 값 비교
}
return false;
}
@Override
public int hashCode() {
return isWorking.hashCode();
}
}
- 예졔1) foreach 돌리기
@Test
@DisplayName("foreah 단순 돌리기")
void case1() {
List<User> examUserList = User.getExamUserList();
examUserList.forEach(user -> log.info("user : {}", user));
}
19:51:33.044 \[Test worker\] INFO com.ymwoo.stream.foreach.StreamForeachTest -- user : User(id=1, name=amil, email=amil@ymwoo.com, age=28, isWorking=true, hobbies=\[골프, 영화감상\])
19:51:33.054 \[Test worker\] INFO com.ymwoo.stream.foreach.StreamForeachTest -- user : User(id=3, name=cho, email=cho@ymwoo.com, age=33, isWorking=false, hobbies=\[등산, 캥핌\])
19:51:33.055 \[Test worker\] INFO com.ymwoo.stream.foreach.StreamForeachTest -- user : User(id=2, name=benny, email=benny@ymwoo.com, age=26, isWorking=true, hobbies=\[골프, 낚시\])
참조
반응형
'JAVA > Stream' 카테고리의 다른 글
[Java] Stream > toMap (0) | 2023.06.20 |
---|---|
[Java] Stream > reduce (0) | 2023.06.20 |
[Java] Stream > distinct (0) | 2023.06.08 |
[Java] Stream > flatMap (0) | 2023.06.08 |
[Java] Stream > map (0) | 2023.06.08 |