UmaiCo - 우마이코

[JAVA] 자바 스트림 본문

[JAVA] 기본 문법

[JAVA] 자바 스트림

코드 미식가 2023. 2. 6. 18:56

자바 스트림

자바 스트림은 자바 8에서 기능이 추가 되었다.



람다를 활용한 기술이며, 배열 혹은 컬렉션에 대한 루프를 돌면서 여러개를 조합하여 원하는 결과를 필터링하고 가공된 결과를 얻을 수 있다.



루프문을 쓰지 않아도 되어서 코드의 양이 매우 줄었고, 매우 자주 사용하는 기술 중 하나이다.

스트림

스트림은 3가지의 순서로 나타낼수 있다.

    1. 생성하기
    1. 가공하기
    1. 결과얻기



1) 생성하기

배열인 경우



배열인 경우에는 다음과 같이 스트림을 생성해야 한다.

String[] arr = new String[]{"a", "b", "c"};
Stream<String> stream1 = Arrays.stream(arr);

Stream<String> stream2 = Arrays.stream(arr, 1, 3); //1~2요소



컬렉션인 경우



컬렉션인 경우 다음과 같이 스트림을 생성한다.

List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream();
Stream<String> parallelStream = list.parallelStream(); // 병렬 처리 스트림



2) 가공하기



1) Filtering

말 그대로 스트림내 요소들을 걸러내는 기능이다.

Stream<String> stream = names.stream()
                    .filter(name -> name.contains("a"));



2) Mapping

스트림 내 요소들을 하나씩 돌아가면서 특정 값으로 변환해주는 기능이다.
스트림 요소들을 람다의 인자로 받는다.

Stream<String> stream = names.stream()
                        .map(s -> s.toUpperCase);



3) Sorting

스트림 내 요소들을 정렬한다.
다른 정렬 방법과 마찬가지로 Comparator를 이용한다.

lang.stream()
  .sorted((s1, s2) -> s2.length() - s1.length())
  .collect(Collectors.toList());



3. 결과 만들기

1) Collectors.toList()

스트림에서 작업한 결과를 리스트롤 담아 반환.

List<String> collectorCollection =
  productList.stream()
    .map(Product::getName)
    .collect(Collectors.toList());



2) Collectors.joining()

스트림에서 작업한 결과를 하나의 스트링으로 이어 붙인다.

String listToString = 
 productList.stream()
  .map(Product::getName)
  .collect(Collectors.joining());



이외에도 여러가지 스트림의 기능이 많은데 다음 글을 참고하자.

https://futurecreator.github.io/2018/08/26/java-8-streams/

'[JAVA] 기본 문법' 카테고리의 다른 글

[JAVA] 제네릭 프로그래밍  (0) 2023.02.07
[JAVA] 어노테이션  (0) 2022.08.06
[JAVA] Enum  (0) 2022.07.30
[JAVA] 생성자  (0) 2022.07.29
[JAVA] 정적 변수와 메소드  (0) 2022.07.24
[JAVA] 접근 제어자  (0) 2022.07.24
[JAVA] 자료형-문자열  (0) 2022.07.17
[JAVA] 자료형-숫자  (0) 2022.07.17