inblog logo
|
송승현의 블로그
    기술정리

    [기술정리]Stream API

    송송승현's avatar
    송송승현
    Nov 20, 2024
    [기술정리]Stream API
    Contents
    정의특징주요 Stream 메서드예제

    정의

    💡
    데이터 처리 작업을 보다 간결하고 효율적으로 수행할 수 있게 도와주는 기능
    컬렉션이나 배열 등의 데이터를 선언형 방식으로 처리
    함수형 프로그래밍의 요소를 활용하여 데이터를 필터링, 변환. 집계하는 등의 작업을 손쉽게 처리

    특징

    • 선언적 코드 : 데이터를 처리하는 방식을 직접적으로 설명하지 않고, 어떤 작업을 할 것인지를 선언적으러 기술
    • 병렬 처리 지원 : 간단한게 병렬 스트림을 사용하여 데이터 처리를 병렬로 수행
    • 중간 연산과 최종 연산 : 스트림 연산은 중간 연산과 취종 연산으로 구분

    주요 Stream 메서드

    중간 연산(Intermediate Operations)

    • filter : 조건에 맞는 요소를 걸러냄
    • Map : 요소를 다른 형태로 변환
    • sorted : 요소를 정렬

    최종 연산

    • collect : 스트림을 컬렉션이나 다른 형태로 변환
    • forEach : 각 요소에 대해 작업을 수행
    • reduce : 요소 결합
    • count : 요소의 개수 카운트

    예제

    import java.util.Arrays; import java.util.List; //Stream public class CountApp { public static void main(String[] args) { List<String> names = Arrays.asList("Alice","Bob","Charlie", "David"); //Stream을 이용한 중간연산 List<String> r1 = names.stream().filter(name -> name.length()>3).toList(); r1.forEach(s->System.out.println(s)); long r2 = names.stream().filter(name -> name.length()>3).count(); System.out.println(r2); } } import java.util.Arrays; import java.util.List; // 기존 데이터를 변형할 때 - Map 사용 public class MapApp { public static void main(String[] args) { List<String> names = Arrays.asList("Alice","Bob","Charlie", "David"); List<String> newNames = names.stream(). map(name -> name.toLowerCase()). filter(name -> name.length()>3). toList(); newNames.forEach(name -> System.out.println(name)); } } import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; //Stream public class GroupApp { public static void main(String[] args) { List<String> names = Arrays.asList("Alice","Bob","Charlie", "David","Anna"); var groupData=names .stream() .map(name -> name.toUpperCase()) .collect(Collectors.groupingBy(s -> s.charAt(0))); System.out.println(groupData); } } import java.util.Arrays; import java.util.List; public class ReduceApp { public static void main(String[] args) { // 1.Reduce(조인) List<Integer> nums = Arrays.asList(1,2,3,4); int sum = nums.stream().mapToInt(x->x).sum(); System.out.println(sum); int sum2 = nums.stream().reduce(5,(prev,next)->{ System.out.println("prev" + prev); System.out.println("next" + next); System.out.println("prev" + prev); return prev+next; }); System.out.println(sum2); } } import java.util.Arrays; import java.util.List; // 기존 데이터를 변형할 때 - Map 사용 public class SortApp { public static void main(String[] args) { List<Integer> nums = Arrays.asList(5,2,3,1,4,2,5); nums.stream() .sorted() .distinct() .forEach( s -> System.out.println(s)); } }
    Share article
    Contents
    정의특징주요 Stream 메서드예제

    송승현의 블로그

    RSS·Powered by Inblog