Time does not change us. It just unfolds us.

Programming

[JAVA]자바 스트림(Stream)

소젬 2021. 10. 25. 10:25

앱이 구동될 때 동작하는 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의 데이터를 변형 등의 처리를 하고 원하는 자료형으로 변환해준다.

기능들은 아래와 같다.

  • 스트림의 아이템들을 List 또는 Set 자료형으로 변환
  • 스트림의 아이템들을 joining
  • 스트림의 아이템들을 Sorting하여 가장 큰 객체 리턴
  • 스트림의 아이템들의 평균 값을 리턴

 

 


참고

https://x-ojm.tistory.com/manage/newpost/?type=post&returnURL=%2Fmanage%2Fposts%2F 

 

TISTORY

나를 표현하는 블로그를 만들어보세요.

www.tistory.com

https://codechacha.com/ko/java8-stream-collect/

 

Java8의 Stream Collect 사용 방법 및 예제

Collect는 Stream의 데이터를 변형 등의 처리를 하고 원하는 자료형으로 변환해 줍니다. List 또는 Set 자료형으로 변환하거나, joining 또는 Sorting하여 1개의 객체를 리턴하기도 합니다. 또는 아이템들

codechacha.com

 

'Programming' 카테고리의 다른 글

SQL 기초중에기초중에기초 문법  (0) 2022.02.11
[Java]리소스 확인  (0) 2021.10.28
[GO]Golang  (0) 2021.10.22