스트림이란?
연산의 처리를 일관성 있게 만든다. 추상화 한다.
-자료의 대상과 관계없이 동일한 연산을 수행 함
배열, 컬렉션을 대상으로 연산을 수행 함
일관성 있는 연산으로 자료의 처리를 쉽고 간단하게 함
자료 처리에 대한 추상화가 구현되었다고 함
-한 번 생성하고 사용한 스트림은 재사용 할 수 없음
자료에 대한 스트림을 생성하여 연산을 수행하면 스트림은 소모 됨
다른 연산을 수행하기 위해서는 스트림을 다시 생성해야 함
-스트림 연산은 기존 자료를 변경 하지 않음
자료에 대한 스트림을 생성하면 스트림이 사용하는 메모리 공간은 별도로 생성되므로 연산이 수행 되어도 기존 자료에 대한 변경은 발생하지 않음
-스트림 연산은 중간 연산과 최종 연산으로 구분 됨
스트림에 대해 중간 연산은 여러 개의 연산이 적용될 수 있지만 최종 연산은 마지막에 한 번만 적용 됨
최종 연산이 호출되어야 중간 연산에 대한 수행이 이루어지고 그 결과가 만들어짐
따라서 중간 연산에 대한 결과를 연산 중에 알 수 없음
이를 '지연 연산'이라 함
스트림 생성하고 사용하기
-정수 배열에 스트림 생성, 연산
import java.util.Arrays;
public class IntArrayTest {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
int sumVal = Arrays.stream(arr).sum();
long count = Arrays.stream(arr).count();
System.out.println(sumVal); // 15
System.out.println(count); // 5
}
}
스트림을 활용하여 패키지 여행 비용 계산하기
여행사에 패키지 여행 상품이 있다. 여행 비용은 15세 이상은 100만원, 그 미만은 50만원이다.
고객 3명이 패키지 여행을 떠난다고 했을 때 비용 계산과 고객 명단 검색 등에 대한 연산을 스트림을 활용해 구현한다.
고객에 대한 클래스를 만들고 ArrayList로 고객을 관리한다.
Lee
이름: 이순신
나이: 40
비용: 100
Kim
이름: 김유신
나이: 20
비용: 100
Hong
이름: 홍길동
나이: 15
비용: 50
1. 고객의 명단을 출력한다.
2. 여행의 총 비용을 계산한다.
3. 고객 중 20세 이상인 사람의 이름을 정렬 해 출력한다.
@Getter
@Setter
public class Customer {
private String name;
private int age;
private int price;
public Customer(String name, int age, int price)
{
this.name = name;
this.age = age;
this.price = price;
}
@Override
public String toString() {
return "이름: " + name + "나이: " + age + "가격: " + price;
}
}
'Java > 패스트캠퍼스' 카테고리의 다른 글
표준 입출력 스트림 (0) | 2022.06.14 |
---|---|
I/O 스트림 (0) | 2022.06.14 |
제네릭 (0) | 2022.06.12 |
Map 인터페이스 구현 클래스 (0) | 2022.06.12 |
Set 인터페이스 구현 클래스 (0) | 2022.06.12 |