ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • day29 - JAVA (자바, 메소드 참조, 스트림, 병렬처리)
    KIC/JAVA 2021. 7. 25. 01:11
    반응형

    [정적 메소드와 인스턴스 메소드 참조]

    -> 클래스 메소드 참조

       클래스 :: 메소드

     

    -> 인스턴스 메소드 참조

       참조변수 :: 메소드

     

     

     

     

    [매개변수 메소드 참조]

    - (a, b) -> {a.instanceMethod(b); }

    ==> 클래스 :: instanceMethod

     

     

     

     

     

     

    [생성자 참조]

    (a, b) -> {return new  클래스(a, b);} ==>클래스 :: new

     

     

     

     

     

     

    [스트림]

    -> 자바 8부터 추가된 컬렉션(배열 포함)의 저장 요소를 하나씩 참조해준다.

     

    -> 람다식(함수적 - 스타일)으로 처리할 수 있도록 해주는 반복자

     

     

     

    [반복자 스트림]

     

     

     

     

     

    [스트림의 특징]

    -> iterator 와 비슷한 역할을 하는 반복자

     

    -> 람다식으로 요소 처리 코드를 제공

       대부분의 요소처리 메소드는 함수적 인터페이스 매개 타입을 가지고 있다.

     

    -> 내부 반복자를 사용하므로 병령 처리가 쉽다

       -> 컬렉션 내부에서 요소들을 반복 시킨다.

       -> 개발자는 요소당 처리 해야 할 코드만 제공

     

     

     

     

    [스트림 종류]

    -> BaseStream: 모든 스트림에서 사용 가능한 공통 메소드 (직접 사용x)

    -> Stream - 객체 요소 처리

    -> IntStream, LongStream, DoubleStream은 각각 기본 타입은 int, long, double 요소 처리

     

     

     

    [스트림 인터페이스의 구현 객체]

    -> 주로 컬렉션과 배열에서 얻음

    -> 소스로부터 스트림 구현 객체 얻는 경우

     

     

     

     

    [파일로부터 스트림 얻기]

    -> File의 정적 메소드인 lines() 와 BufferedReader 의 lines(0 메소드 이용

    ->문자 파일 내용을 스트림 통해 행 단위로 읽고 콘솔에 출력

      

     

    [디렉토리로부터 스트림 얻기]

    -> File의 정적 메소드인 list() 이용

    ->디렉토리 내용(서브 디렉토리 또는 파일 목록)을 스트림 통해 읽고 콘솔에 출력

     

     

     

     

    [stream 예제]

    package javaPro.java_Stream;
    
    import java.util.Arrays;
    import java.util.Iterator;
    import java.util.List;
    import java.util.stream.Stream;
    
    public class StreamEx0 {
        public static void main(String[] args) {
            List<String> list = Arrays.asList("홍길동", "김삿갓", "이몽룡", "성춘향");
            System.out.println("외부 반복자 사용");
            Iterator it = list.iterator();
            while (it.hasNext()) {
                System.out.println(it.next());
            }
    
            System.out.println("내부 반복자 사용");
            //list.stream().forEach(s -> System.out.println(s));
            Stream<String> st = list.stream(); // List 객체를 Stream 객체 변환
            st.forEach(s -> System.out.println(s));
    
            System.out.println("다시 출력");
            list.stream().forEach(s -> System.out.println(s));
    
        }
    
    }
    300x250

    댓글

Designed by Tistory.