관리 메뉴

CASSIE'S BLOG

[슈퍼코딩] 57-1강 stream 사용하여 컬렉션 우아하게 사용하기 본문

PROGRAMMING/슈퍼코딩 강의 정리

[슈퍼코딩] 57-1강 stream 사용하여 컬렉션 우아하게 사용하기

ITSCASSIE1107 2023. 12. 15. 16:43
반응형

컬렉션을 가방에 비유

stream Api란 함수형 프로그래밍 도입하여 컬렉션, 배열 등을 처리/조작을 간단/효율적으로 하는 api

왜 stream api 사용하는가?

For-loop을 함수형 프로그래밍을 통해 가독성 좋게 람다식으로 개선할 수 있다.

퍼포먼스 측에서도 병렬연산이 가능해진단다.


Stream 문법 소개

stream 만드는 방법 (크게 3가지)

1. stream.of()문법
2. Arrays.stream();
3. Collection에서 stream으로 바꾸는


많이 쓰는 방법은 Collection에서 stream으로 바꾸는 걸 많이 한다.

1. of를 이용해서 array처럼 바로 초기화해서 사용 가능

2. Array에 있는 것을 Array에 넣어서 stream을 만들 수 있다.

Arrays.stream(new String[]{“Apple”, “Banana”, “Orange”});

3. 이렇게 하는데?
List<String> fruits = new ArrayList<>();

fruits.add(“Apple”);

fruits.add(“Banana”);

Stream<String> fruitStream3 = fruits.stream();

실습
1. Stream Api 만들어보기(Stream.of(), Arrays.stream(), collection.stream();)

2. 간단한 for loop를 stream으로 개선하기

Stream은 제네릭 이기 때문에 타입을 설정해줘야한다.

그리고 따로 util의 Stream를 import해줘야함

Stream<String> fruits = Stream.of(“apple”, “banana”, “orange”);

Arrays안에 array정의 해줘야함

Stream<String> fruits2 = Arrays.stream(new String[]{“apple”, “banana”});

3번

구현체는ArrayList와 노드구조인 LinkedList 보통의 경우에는 ArrayList가 더 유리하긴 하다.

이거는 한개씩 한개씩 add를 해줘야한다고 함

//Collection
List<String> fruits3 = new ArrayList<>();

fruits3.add(“apple”);

 

List<Integer> integerList = new ArrayList<>();
integerList.add(1);
integerList.add(2);
integerList.add(3);
integerList.add(4);
integerList.add(5);
integerList.add(6);
integerList.add(7);
integerList.add(8);
integerList.add(9);
integerList.add(10);

Stream<Integer> integerStream3 = integerList.stream(); //Integer의 Stream으로 함

 

 

 

// Collection
List<String> fruitsList = new ArrayList<>();
fruitsList.add("Apple");
fruitsList.add("Banana");
fruitsList.add("Orange");
fruitsList.add("Mango");
fruitsList.add("Grapes");

 

 

Stream<String> fruit3 = fruitsList.stream();

 

// Stream 가지고 For-loop을 표현하는 법
for(String fruit: fruitsList){
    System.out.println("for-loop로 fruit 산출: " +  fruit.toUpperCase());
}

 

String fruit는 for-loop에서 사용되는 변수입니다. 이 변수는 fruitsList라는 리스트의 각 요소를 대표합니다. 각 반복(iteration)에서 fruit 변수는 리스트에서 다음 요소로 업데이트되며, 반복할 때마다 현재 요소에 대한 작업을 수행할 수 있습니다.

즉, for (String fruit : fruitsList) 구문은 fruitsList에 있는 각 과일 요소에 대해 반복하면서 현재 과일 요소를 fruit 변수에 할당하고, 이를 통해 반복문 안에서 해당 과일에 대한 작업을 수행합니다. 코드에서는 각 과일을 대문자로 변환하여 출력하고 있습니다.

 

//Stream 을 이용해서 forEach 

 

이건 람다식

() -> 

 

이런 틀로 사용하면 됨

이부분은 forEach() 

 

// Stream
fruit3.forEach( (fruit) -> System.out.println("forEach로 fruit 산출: " + fruit.toUpperCase() ));
반응형