Iterable 다루기

최준호·2022년 5월 19일
0

업무

목록 보기
11/31
post-thumbnail

밸덩 Iterable 다루기

repository를 jpa를 통해서 extend 하여 생성하게 되면 List 혹은 Iterable로 반환하게 되어있다. 그중 나는 CrudRepository를 주로 사용하는 편이여서 Iterable을 통해 Dto나 Vo로 변환하여 반환하는 경우가 많아 정리해두려고 한다.

✅forEach 사용하기

@Override
public List<ResponseAdminUser> findAll() {
    Iterable<String> users = Arrays.asList("test1","test2","test3");

    List<String> list = new ArrayList<>();
    users.forEach(list::add);
    return null;
}

data를 forEach를 돌려야할 경우 다음과 같이 사용하면 된다.

✅List 변환

@Override
public List<ResponseAdminUser> findAll() {
    //Iterable<AdminUser> users = adminUserRepository.findAll();
    Iterable<String> users = Arrays.asList("test1","test2","test3");

    List<String> list = ImmutableList.copyOf(users);
    return null;
}

List로의 변환은 다음과 같이 간단하게 할수도 있다.

✅stream 변환

@Override
public List<ResponseAdminUser> findAll() {
    //Iterable<AdminUser> users = adminUserRepository.findAll();
    Iterable<String> users = Arrays.asList("test1","test2","test3");

    List<String> list = StreamSupport.stream(users.spliterator(), false).collect(Collectors.toList());
    return null;
}

stream을 이용하여 사용하고자 한다면 다음과 같이 사용하면 되고 parallel의 값을 true로 바꿔주면 병렬 처리가 가능하다.

병렬로 처리한다고 꼭 빠른 것은 아니다. 데이터를 병렬화하기 위해 스트림을 재귀적으로 분할하고 쓰레드를 할당하고 그 결과를 연산하는데 걸리는 시간까지 계산했을 때 오히려 병렬 연산이 더 느릴 수도 있다.

profile
코딩을 깔끔하게 하고 싶어하는 초보 개발자 (편하게 글을 쓰기위해 반말체를 사용하고 있습니다! 양해 부탁드려요!) 현재 KakaoVX 근무중입니다!

0개의 댓글