앱이 구동될 때 동작하는 ApplicationRunner 부분에서 Stream을 사용하고 있는데 Java에 익숙하지 않아 처음 접하는 낯선 개념이라 API를 찾아봤다.
import java.util.stream.Stream;
Stream은 컬렉션, 배열등의 저장 요소를 하나씩 참조하며 함수형 인터페이스(람다식)를 적용하며 반복적으로 처리할 수 있도록 해주는 기능이다.
Stream을 이용하면 불필요한 코딩(for, if 문법)을 걷어낼 수 있고 직관적이기 때문에 가독성이 좋아진다.
map() 함수
map은 요소들을 특정조건에 해당하는 값으로 변환해주어 특히 요소들을 대,소문자 변형 등의 작업을 하고 싶을떄 사용한다.
코드 안에서는 entity로 정의한 App이라는 DB table data 객체를 생성하는 작업을 한다.
private final AppService appsService;
@Override
public void run(ApplicationArguments args) {
appsService.removeAllApps();
List<App> apps = Stream.of(App.AppType.values()).map(e ->
App.builder()
.name(e.name())
.type(e)
.createDate(new Date()).build()
).collect(Collectors.toList());
appsService.saveApps(apps);
}
collect() 함수
Iterable<String> temp = Splitter.fixedLength(2).split(str);
List<String> ret = StreamSupport.stream(temp.spliterator(), false).collect(Collectors.toList());
이 때 str은 String 형의 데이터다.("000000000000")
collect는 Stream의 데이터를 변형 등의 처리를 하고 원하는 자료형으로 변환해준다.
기능들은 아래와 같다.
|
참고
https://x-ojm.tistory.com/manage/newpost/?type=post&returnURL=%2Fmanage%2Fposts%2F
https://codechacha.com/ko/java8-stream-collect/
'Programming' 카테고리의 다른 글
SQL 기초중에기초중에기초 문법 (0) | 2022.02.11 |
---|---|
[Java]리소스 확인 (0) | 2021.10.28 |
[GO]Golang (0) | 2021.10.22 |