sussa
컴퓨터가 할 일은 컴퓨터가.
sussa
전체 방문자
오늘
어제

블로그 메뉴

    • 분류 전체보기 (58)
      • Language (58)
        • JAVA (58)

    공지사항

    인기 글

    태그

    • Til
    • Thread
    • 자료구조
    • DI
    • spring
    • Algorithm
    • java
    • HTML
    • 최종연산
    • Method
    • Web
    • 캡슐화
    • 웹개발종합반
    • recursion
    • Instance
    • inheritance
    • 스파르타코딩클럽
    • 조건문
    • 재귀
    • 상속
    • binaryTree
    • BinarySearchTree
    • Stream
    • 다형성
    • 개발자
    • Class
    • Database
    • singleton
    • tree
    • CSS

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    sussa

    컴퓨터가 할 일은 컴퓨터가.

    Language/JAVA

    Java Stream

    2022. 9. 10. 14:56

    🎯 목표 :  Stream의 개념 과 활용 이해

    📒 Stream

     

    📌 특징

    • 다양한 데이터 소스를 표준화 된 방법으로 다루기 위한 것.
    • 데이터 소스를 추상화하고, 자주 사용하는 메소드가 정의되어 있음, 데이터 소스가 무엇이던 간에 같은 방식으로 다룰수 있다. 코드의 재 사용성이 높아진다.
    • 데이터 소스로 부터 데이터를 읽기만 하고 변경하지 않는다.
    • 지연된 연산을 한다.
    • 스트림의 작업은 내부 반복으로 처리된다.- 반복문을 메소드의 내부에 숨길수 있기 때문에 코드가 간결해진다.
    for(String str : strList) System.out.println(str);
    
    stream.forEach(System.out::println); // 위와 동일한 코드
    // 내부 반복으로 작업을 하기 때문에 스트림의 모든 요소에 적용된다.
    • 스트림은 중간연산과 최종연산을 할수 있는데, 최종연산을 하게되면 스트림의 요소를 소모하기 때문에 다시 연산을 하기위해서는 새로 생성해야된다. - 이터레이터와 비슷하다.
    • 데이터 소스를 병렬 처리 가능하다. - 병렬스트림 parallel()  - 멀티 쓰레드로 작업 처리

    📌 스트림 생성

    • 배열과 컬랙션의 스트림 생성
        String [] arr =  {"aa","ab","AA","bb","cc","CC"};
        List<String> strList = Arrays.asList(arr);
    
        Stream<String> streamarr = Arrays.stream(arr); // 스트림 생성
        Stream<String> streamarr1= strList.stream();  // 스트림 생성
    
        streamarr.sorted().forEach(System.out::print);
        System.out.println();
        streamarr1.sorted().forEach(System.out::print);
        System.out.println();
        
        // 출력값
        // AACCaaabbbcc
        // AACCaaabbbcc
        
        int [] arr2 = {1,2,3,4,5,6,7}; // int 배열은 기본형 스트림으로 생성할수 있다.
        IntStream intstream =Arrays.stream(arr2); // 기본형 스트림 생성
        IntStream intStream1 = IntStream.of(arr2); // 기본형 스트림 생성
        // Stream<Integer> 스트림으로 생성하려고 하면 형변환을 해줘야된다.
    • 난수의 스트림 출력
        IntStream intStream1 = new Random().ints(1,46);
        intStream1.distinct().limit(6).sorted().forEach(i->System.out.print(i+" "));
        System.out.println();
        // 1~45 숫자중 난수로 무한스트림을 생성하고.
        // distinct() 중복제거
        // limit() 길이만큼 자르기
        // sorted() 정렬
    • Steram 클래스 iterate()  , generate()는 람다식을 매개변수로 받아서 스트림을 생성한다.
        // iterate(T seed, UnaryOperator f) 단항연산자
        Stream<Integer> intStream3 = Stream.iterate(0, n->n+2);
        // 짝수 무한스트림.
    
    
        // generate(Supplier s)  입력 x 출력 o
        Stream<Integer> intStream4 = Stream.generate(()->5);
        // 5 만 출력하는 무한스트림.

     

    'Language > JAVA' 카테고리의 다른 글

    Java Stream Optional<T>  (0) 2022.09.10
    Java Stream의 중간 연산  (0) 2022.09.10
    Java Interface의 다형성_OOP_추상화_02  (0) 2022.09.07
    Java Lambda Expression(람다식)_02  (0) 2022.09.07
    Java Lambda Expression(람다식)_01  (1) 2022.09.07
      'Language/JAVA' 카테고리의 다른 글
      • Java Stream Optional<T>
      • Java Stream의 중간 연산
      • Java Interface의 다형성_OOP_추상화_02
      • Java Lambda Expression(람다식)_02
      sussa
      sussa
      Efforts to take on a challenge

      티스토리툴바