JAVA__54_Stream_3_filter

AMJ·2023년 3월 10일
0

언어_log

목록 보기
56/57

main문

import java.util.Arrays;
import java.util.stream.IntStream;

class Main {
    public static void main(String[] args) {
//        new ver1().run();
//        System.out.printf("\n");
        new ver2().run();
        System.out.printf("\n");

    }
}

for문 - 배열연산

class ver1{
    public void run(){
        int[] arr ={33,2,55,4,51,6,71,18,29,10};
        int resultLen=0;

//  for문 방식1
//        for ( int n : arr){
//            if( n % 2 != 0) { resultLen++; }
//        }

//  for문 방식2 : 한줄로 표현 가능한 경우 {} 생략 가능
        for (int n : arr ) if(n%2!=0) resultLen++;
        int[] result = new int[resultLen];
        int result_last_index = 0;
        for (int n : arr ) {
            if (n % 2 != 0) continue;
            result[result_last_index++] = n*2;
        }
//        System.out.printf("%s", arr); // 리모콘이라 주소 출력
        System.out.printf("%s\n", Arrays.toString(arr));
        System.out.printf("%s", Arrays.toString(result));
    }
}

stream 방식 - 배열연산

class ver2{

    public void run() {
        int[] arr ={33,2,55,4,51,6,71,18,29,10};
        int[] result = Arrays.stream(arr)  // 배열을 스트림형식 변환 복제품 생성
                .filter(e-> e % 2 == 0)    // 연산에 참에 해당하는 것만 남는다. 짝수만 남는다.
                .map(e -> e * 2)           //  filter되고 남은 e(요소)에 2곱을 한다.
                .sorted()                  // 오름차순 정렬한다.
                .toArray();         // collect 라인 : 배열로 반환
        System.out.printf("%s\n", Arrays.toString(arr));
        System.out.printf("%s", Arrays.toString(result));
    }
}
profile
재미있는 것들

0개의 댓글