자바 스트림(java stream) 쉽고 빠르게 알아보자 (간단한 예제)
2023. 2. 1. 22:50ㆍ개발공부
반응형
SMALL
오늘은 자바 스트림에 대해 알아보도록 한다.
자바 스트림(java stream) 이란?
stream은 자바 8 버전부터 도입되었으며,
stream을 생성하고 filter로 중간 연산,
collect 로 최종 연산하여 원하는 데이터를 얻을 수 있다.
쉽게 말해 for문과 같이 반복처리 작업으로 원하는 데이터를 얻어내는데 사용된다.
기존 for문과의 차이점
1. 코드블럭으로 사용되는 for문과 달리 함수 객체(함수처럼 호출 가능한 객체)로 표현된다.
2. return으로 빠져 나가거나 break, continue 반복문 제어가 불가능하다.
3. 람다로 표현되기 때문에(final 변수만 읽을 수 있어서) 지역 변수를 수정 할 수 없다.
4. 익숙해 지면, 표현을 더 간결하게 할 수 있다.
stream을 왜 쓸까?
- 배열이나 컬렉션(Collection) 등을 사용하여 데이터를 처리 할 때, 이를 정형화된 패턴으로 접근하기 위해 사용한다.
stream 사용법 1
//List 선언
List<String> list = Arraylist.asList("사과", "복숭아", "딸기");
//Stream 이용
Stream<String> stream = list.stream();
stream.forEach(fruit -> System.out.println(fruit));
콘솔창에는 다음과 같이 출력된다.
사과
복숭아
딸기
for문을 돌려 사용 하는 것 보다 훨신 간결하게 사용 할 수 있다.
stream 사용법 2 (Collection 타입에서의 사용)
//Fruit 라는 객체가 있고, 다음 객체에 getter method를 정의했다고 가정한다.
private String name; // 과일명
private int price; // 가격
//List 선언
List<Fruit> list = Arrays.asList(
new Fruit("사과", 1000),
new Fruit("복숭아", 2000)
);
Stream<Fruit> stream = list.stream();
stream.forEach(e ->{
String name = e.getName();
int price = e.getPrice();
System.out.println(name + "의 가격은 = " + price);
});
다음과 값이 콘솔에 출력된다.
사과의 가격은 = 1000
복숭아의 가격은 = 2000
stream 사용법 3 (중간처리와 최종처리 하기)
중간처리 : 요소들의 매핑, 필터링, 정렬 등
최종처리 : 반복, 카운트, 평균, 합계
예제는 중간처리 - 매핑, 최종처리 - 평균으로 진행한다.
// 과일들의 평균 가격 구하기
//List 선언
List<Fruit> list = Arrays.asList(
new Fruit("사과", 1000),
new Fruit("복숭아", 2000)
new Fruit("수박", 3000)
);
//방법 1
double avg1 = list.stream()
.mapToInt(f -> f.getPrice()) // int타입의 새로운 stream의 요소로 만듬.
.avarage() // 평균 구해주는 method(return Type : Double)
.getAsDouble(); // double 최종 return
//방법 2
double avg2 = list.stream()
.mapToInt(Fruit::getPrice)
.avarage()
.getAsDouble();
System.out.println("평균가격1 => " + avg1 );
System.out.println("평균가격2 => " + avg2 );
평균가격1 => 2000
평균가격2 => 2000
반응형
LIST
'개발공부' 카테고리의 다른 글
AWS[3] AWS환경에서 Docker 설치 및 Docker 이미지 생성 (1) | 2025.03.11 |
---|---|
AWS[2] 생초보의 react 구축 및 실행하기 (node.js, npm, react 설치, aws 인바운드 규칙 수정) (8) | 2025.03.07 |
AWS [1] 첫 시작의 기록 (EC2, SSH 접속 방법, 기본설정 과금방지설정) (2) | 2025.03.06 |
DB2 SQL 에러코드 정리 (0) | 2023.01.17 |
오브젝트 스토리지(Object Storage) 쉽고 빠르게 알아보기 (0) | 2023.01.05 |