JAVA/Java Stream

Stream 객체 값 변경 예제

lovineff 2020. 11. 30. 16:54

아래와 같이 사용하고, 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