아래와 같이 사용하고, map().collect()를 사용하지 않아도 된다.
String, Integer는 아래와 같은 방식으로는 구현이 불가능하며, map().collect()를 사용하자
static class Person{
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@Test
void test(){
List<Person> personList = Arrays.asList(new Person("1"), new Person("2"));
// 객체 값 변경 전 출력
personList.forEach(person -> System.out.println(person.getName()));
System.out.println("--------");
// 객체 값 변경
personList.stream().forEach(person -> person.setName(person.getName() + " aa"));
// 객체 값 변경 후 출력
personList.forEach(person -> System.out.println(person.getName()));
}
실제 적용 사례
// 게시글 목록 조회
List<GiantArticle> giantArticleList = giantArticleMapper.getArticleInQuery(articleCommandByList);
// 첨부파일이 있는 경우에만 첨부파일 조회
giantArticleList
.parallelStream()
.filter(giantArticle -> giantArticle.getFileCnt() > 0 || giantArticle.getMultimediaCnt() > 0)
.forEach(giantArticle -> getArticleMetaList(new ArticleCommand(articleCommandByList.getBbsId(), giantArticle.getArticleId()))
.stream()
.filter(Objects::nonNull)
.findFirst()
.ifPresent(articleMeta ->{
giantArticle.setAttachFiles(articleMeta.getAttachFiles());
giantArticle.setMultiMedias(articleMeta.getMultiMedias());
}
)
);
return giantArticleList;
'JAVA > Java Stream' 카테고리의 다른 글
Map 반복문 (0) | 2021.04.12 |
---|---|
Map Parallel (Map 병렬처리) 방법 (0) | 2021.03.30 |
Java 1.8 CompletableFuture 모든 동작 완료 확인 (0) | 2020.06.04 |
Stream 함수 (0) | 2020.06.04 |
JAVA Stream 기본 (0) | 2020.06.04 |