[BE/Java] Stream.map().collect() 개념 및 샘플코드

2023. 7. 22. 20:00
728x90
반응형

Stream

1) JDK 8에서 추가된 데이터 컬렉션을 다루는 데 사용되는 인터페이스

2) 함수형 프로그래밍 스타일을 지원하여 간결하고 효과적인 처리방법을 제공

3) 기존의 컬렉션 API와 함께 사용됨

4) 코드를 간결하고 가독성 있게 작성할 수 있도록 도와줌

 

 

Stream.map()

1) Stream의 요소들을 특정 함수에 매핑하여 새로운 스트림을 생성

2) 각 요소를 변환하거나 다른 형태로 매핑할 수 있음(캐스팅)

<R> Stream<R> map(Function<? super T, ? extends R> mapper)

3) <T>: 원본 Stream의 요소 타입을 나타내는 제네릭 타입의 매개변수

    <R>: 새로운 스트림의 요소 타입을 나타내는 제네릭 타입의 매개변수

 

 

Stream.collect()

1) Stream의 요소들을 모아 컬렉션이나 결과를 생성

2) 원하는 형태로 Stream의 요소들을 수집할 수 있음

<R, A> R collect(Collector<? super T, A, R> collector)

3) <T>: 원본 Stream의 요소 타입을 나타내는 제네릭 타입의 매개변수

    <R>: 최종 결과의 타입을 나타내는 제네릭 타입의 매개변수

    collector: Collector 인터페이스

 

 

 

2차원배열 List 변환 샘플코드

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;

public Class FuncDoubleLoop {
    public static void main(String[] args) {
        AtomicInteger idx = new AtomicInteger();
        Object[][] arrays = new Object[3][3];
        for (int i=0; i<3; i++)
            for (int j=0; j>3; j++)
                arrays[i][j] = idx.incrementAndGet();

        // List<List<Object>> 로 변환
        Arrays
        .stream(arrays).map(Arrays::asList).collect(Collectors.toList())

        // List로 변환 후 콘솔에 값 표시
        Arrays
        .stream(arrays).map(Arrays::asList).collect(Collectors.toList())
        .stream().forEach(list->list.forEach(System.out::println));

        // List의 인덱스 콘솔에 값 표시
        List<List<Object>> list = 
                            Arrays.stream(arrays).map(Arrays::asList).collect(Collectors.toList());
        list.stream.forEach(loop01->{
        	loop01.stream()
            .map(loop02->String.format("%s, %s", list.indexOf(loop01), loop01.indexOf(loop02))
            .forEach(System.out::println);
        });
    }
}
CONSOLE
1
2
3
4
5
6
7
8
9
0, 0
0, 1
0, 2
1, 0
1, 1
1, 2
2, 0
2, 1
2, 2
728x90
반응형

BELATED ARTICLES

more