[Java] 스트림(Stream) 사용 방법 및 예제
자바 스트림 (Stream)
자바의 스트림(Stream)은 'Java 8' 부터 지원되기 시작한 기능이다. 스트림은 컬렉션에 저장되어 있는 Element들을 하나씩 순회하면서 처리하는 패턴이다. 람다식과 함께 사용되면서 컬렉션에 들어있는 데이터에 대한 처리를 간결하게 표현하여 작성할 수 있다는 장점이 있다. 내부 반복자를 사용하여 병렬처리가 쉽다.
Java 8 이전에는 for문이나 Iterator 를 사용하여 순회하였다. 컬렉션을 순회하며 값을 출력한다는 단순한 동작에 지저분한 코드들이 많이 생성되었다. 이때, for each 문을 사용하면 좀더 간결해진다.
1. 스트림 생성
List<String> list = {"a", "b", "c"};
Stram<String> stream = list.stream();
컬렉션 객체에서 stream() 메소드를 호출하면 위와 같이 스트림 객체를 생성할 수 있다.
2. 스트림 생성 - build()
String<String> stream = Stream<String>builder()
.add("a")
.add("b")
.add("c")
.add("d")
.build();
위와 같이 만들어진 스트림 객체는 a, b, c, d 순서대로 문자열 데이터를 처리하게 된다.
3. 스트림 생성 - Generator
데이터를 생성하는 람다식을 이용하여 스트림 객체를 생성할 수 있다. list 데이터에서 limit을 걸어 갯수 제한도 가능하다.
delDuplicationList = delDuplicationList.stream()
.limit(10)
.collect(Collectors.toList());
중복을 제거하는 delDuplicationList 에 limit 10으로 상위 10건의 리스트 데이터만 가져올 수 있다.
4. 스트림 생성 - Iterator
Stream<String> stream = Stream.iterator(100, n -> n + 10).limit(5);
5. 스트림 생성 - max, min
이전에는 for문을 사용하여 list를 돌며 max value와 min value를 출력해야했는데, java 8 이후, stream 덕분에 쉽게 출력할 수 있게 되었다.
int maxValue = list
.stream()
.max(Comparator.comparing(AResponse::getPrice)) // Price의 max
.orElseThrow(NoSuchElementException::new);
int minValue = list
.stream()
.min(Comparator.comparing(AResponse::getPrice)) // Price의 min
.orElseThrow(NoSuchElementException::new);
'Back-End > Java' 카테고리의 다른 글
[Java] java.lang.IllegalStateException: No thread-bound request found (0) | 2024.08.08 |
---|---|
[Java] Path with "WEB-INF" or "META-INF" 에러 발생 (0) | 2024.08.07 |
[Java] DTO 또는 Domain 으로 생성한 컬럼 camelcase 로 변환 (0) | 2022.07.10 |
[Java] 숫자 뒤집기 (0) | 2022.05.12 |
[Java] 향상된 for문 사용하기 (0) | 2022.05.11 |
최근댓글