ABOUT ME

Today
Yesterday
Total
  • [JAVA] Stream API란?
    java 2024. 8. 8. 13:27
    • Java Stream API는 일련의 데이터의 흐름을 표준화된 방법으로 쉽게 처리할 수 있도록 지원하는 패키지입니다.
    • Java Stream API를 이용하면 일련의 데이터를 함수형 연산을 통해 표준화된 방법으로 쉽게 가공, 처리할 수 있습니다.
    • Java Stream API는 대량의 데이터를 표준화된 방식으로 처리하기 위한 용도로 만들어졌습니다.

    Java Stream API 장점 

    1. 가독성 & 유지보수성 향상

    List 사용

    List<String> names = Arrays.asList("James", "Kevin", "Jayden", "David", "Alice", "Jackson");
    List<String> filteredNames = new ArrayList<>();
    for (String name : names) {
        // 이름 중에 J로 시작하고 5자 보다 많은 이름 찾기
        if (name.startsWith("J") && name.length() > 5) {
            filteredNames.add(name);
        }
    }
    Collections.sort(filteredNames);
    for (String filteredName : filteredNames) {
        System.out.println(filteredName);
    }

    Stream 사용

    // 이름 중에 J로 시작하고 5자 보다 많은 이름 찾기
    names.stream()
            .filter(name -> name.startsWith("J") && name.length() > 5)
            .sorted()
            .forEach(System.out::println);

     

    - 위의 코드 예제들 처럼 Stream API를 사용하면 List를 이용할때와 다르게, 반복문, 조건문 필요없이 Stream의 사용으로 복잡하고 가독성 떨어지는 코드를 간결하게 만들 수 있습니다. 

     

    2. 병렬처리 지원

    - Stream에서는 데이터의 흐름을 나누어서 멀티 스레드로 병렬로 처리하고 처리후 합치는 과정을 거치기 때문에, 대량의 데이터를 보다 더 빠르고 효율적으로 처리할 수 있다는 장점이 있습니다. 병렬처리, 즉 여러개의 작업을 동시에 실행하기 때문에 대량의 데이터를 관리해야할 경우 더욱더 효율적입니다. 반대로, 소량의 데이터에 이용하게 될 경우 역으로 비효율적일 수 있기 때문에 유의하여 사용하는것이 좋습니다.

    - Stream에서 parallel() 혹은 parallelStream()을 이용하여 간편하게 병렬처리를 구현 할 수 있습니다.

     

    Stream Api 사용법

    // stream filter (특정 조건에 맞는 값만 가져오기)
    Stream<String> filteredNames = names.stream().filter(name -> name.length() > 6 && name.startsWith("A"));
    
    // stream map (값 변환하기)
    Stream<String> mappedNames = names.stream().map(name -> "Mr/Mrs." + name);
    
    // stream sort (정렬하기)
    Stream<String> sortedNames = names.stream().sorted();
    
    // stream distinct (중복값 없애기)
    Stream<String> distinctNames = names.stream().distinct();
    
    // stream limit (limit 만큼의 데이터만 가져오기)
    Stream<String> limitedNames = names.stream().limit(5);

     

    출처

    https://www.elancer.co.kr/blog/view?seq=255

    'java' 카테고리의 다른 글

    클래스, 객체, 인스턴스 차이 JAVA  (0) 2023.03.01
    java 스트림  (0) 2023.01.17
    자바 Static과Heap  (0) 2023.01.15

    댓글

Designed by Tistory.