Developer N
[JAVA] 자바 스트림(Stream) 활용 본문
728x90
자바 스트림(Stream)
- 자바의 스트림(Stream)은 Java 8에 추가된 기능으로, 컬렉션에 저장되어 있는 요소들을 하나씩 참조하여 람다식으로 처리하는 코드패턴이다.
- 람다식과 함께 사용하므로 데이터의 처리 과정을 간결하게 작성할 수 있으며, 내부 반복자라는 것을 사용하여 병렬처리가 쉽다.
스트림 활용
- filter()
- 요소들을 조건에 따라 걸러내준다.
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5));
list.stream().filter(idx -> (idx > 1)).forEach(System.out::println);
// 결과
// 2, 3, 4, 5
- sorted()
- 리스트의 요소를 정렬한다.
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(3, 2, 5, 6, 4);
System.out.println(list.stream().sorted().collect(Collectors.toList()));
// 2, 3, 4, 5, 6
- map()
- 값을 변환해주는 람다식을 인자로 받아, 람다식을 적용해 새로운 데이터를 만들기 위해 사용한다.
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5));
list.stream().filter(v -> (v > 1)).map(v -> v * 10).forEach(System.out::println);
// 20, 30, 40, 50
- findFirst()
- 조건에 일치하는 요소 1개 리턴. 조건에 일치하는 요소가 없다면 empty 리턴
List<String> els = Arrays.asList("a", "bb", "bc", "c", "d");
System.out.println(els.stream().filter(s -> s.contains("b")).findFirst();
// bb
- findAny()
- 조건에 일치하는 요소 1개를 리턴
List<String> els = Arrays.asList("a", "bb", "bc", "c", "d");
System.out.println(els.stream().filter(s -> s.contains("b")).findAny();
// bb 또는 bc
- findFirst()와 findAny()의 차이점
- findFirst()는 여러 요소가 조건에 부합했을 때 Stream의 순서를 고려하여 가장 앞에 있는 요소 리턴
- findAny()는 가장 먼저 찾은 요소를 리턴. 즉, Stream의 뒤에 위치한 요소가 리턴될 수도 있다.
- orElse()
- 조건에 해당하는 값이 없을 경우 사용
List<Integer> list = Arrays.asList(1, 2, 3);
System.out.println(list.stream().filter(v -> (v == 4)).findAny().orElse("none");
// none
728x90
'STUDY > JAVA | SPRING' 카테고리의 다른 글
[Java] String 문자열 특정 길이만큼 분할하기 (0) | 2023.06.01 |
---|---|
[Java8] Stream()을 이용하여 List<Map<String, Object> to List<String> 자료형 변환 (0) | 2023.04.26 |
[Spring] @RequiredArgsConstructor 어노테이션을 사용하여 생성자 주입하기 (0) | 2023.03.23 |
[Spring Boot] 이클립스로 스프링부트 시작하기 (0) | 2023.02.28 |
[Java] 로깅(logging) 사용 방법 (0) | 2023.02.27 |
Comments