Day8 - stream

박경희·2023년 6월 1일
0

강의 복습 및 정리

목록 보기
16/38
 package Day8;

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        //데이터는 원본 유지하고 새로운걸 만들어야 한다.
        //불변성
        list.add(1);
        list.add(2);
        list.add(3);
        //만약 list * 2한 데이터를 요구한다면?  아래처럼 하면 된다.
        List<Integer> list2 = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            list2.add(list.get(i) * 2);
        }
        System.out.println(list);
        System.out.println(list2);
    }
}

이렇게 하면 불편하기 때문에 stream이 나온 것이다. 자바 1.8부터 나왔다.

2.stream

 // 이렇게 쓰는게 불편해서 stream이 나왔다.
        list.stream().map(a -> {
            
        });      //map(a->)익명함수를 만드는것. 이게 기본 틀
  • el이 뭔지 먼저 살펴보자.
 list.stream().map(el -> { //map(a->)익명함수를 만드는것. 
            System.out.println(el);
            return el * 2;
        }).collect(Collectors.toList());  
        
      
List<Integer> collect = list.stream().map(el -> { //map(a->)익명함수를 만드는것. 
            System.out.println(el);                 // el은 엘리멘트.
            return el * 2;                       // el ->하나씩 꺼내서 보여줌. 
        }).collect(Collectors.toList());        //여기서 다시 배열에 넣어주는 것.
        System.out.println(collect);            //그래서 배열로 나옴

아래와 같이 바꿈

List<Integer> collect = list.stream().map(el ->  //map(a->)익명함수를 만드는것.
            el * 2                                      // el ->하나씩 꺼내서 보여줌.
        ).collect(Collectors.toList());                     //여기서 다시 배열에 넣어주는 것.
        System.out.println(collect);

출력
[1, 2, 3][2, 4, 6]
1
2
3
[2, 4, 6]

package Day8;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        //데이터는 원본 유지하고 새로운걸 만들어야 한다.
        //불변성
        list.add(1);
        list.add(2);
        list.add(3);
        //만약 list * 2한 데이터를 요구한다면?  아래처럼 하면 된다.
        List<Integer> list2 = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            list2.add(list.get(i) * 2);
        }
        System.out.println(list);
        System.out.println(list2);
        // 이렇게 쓰는게 불편해서 stream이 나왔다.
        //map 길이 같은 리스트를 만드는 것.
        List<Integer> collect = list.stream().map(el ->  //map(a->)익명함수를 만드는것.
                el * 2                                      // el ->하나씩 꺼내서 보여줌.
        ).collect(Collectors.toList());                     //여기서 다시 배열에 넣어주는 것.
        System.out.println(collect);                        //그래서 배열로 나옴

    }
}
 List<Integer> collect = list.stream().map(el ->  //map(a->)익명함수를 만드는것.
                el * 2                                      // el ->하나씩 꺼내서 보여줌.
        ).collect(Collectors.toList());                     //여기서 다시 배열에 넣어주는 것.
        System.out.println(collect);                        //그래서 배열로 나옴
  • 출력
    [1, 2, 3][2, 4, 6]
    [2, 4, 6]
List<Integer> collect1 = list.stream().filter(el -> el % 2 == 0).collect(Collectors.toList());
        //filter -  거른다~ el - 하나씩 뽑아올건데 무엇을 리턴할건지만 다른것이다. el % 2 == 0이거면 리턴 아니면 리턴 없음?
        // 2로 나눠서 0인것을 뽑아내는것.

-> [2] 하나 출력됨.

List<Integer> collect1 = list.stream().filter(el -> el % 2 == 0)
                .map(el -> el * 2)          // 이렇게 여러개를 할수도 있다.
                .collect(Collectors.toList());
        System.out.println(collect1);

최종

package Day8;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        //데이터는 원본 유지하고 새로운걸 만들어야 한다.
        //불변성
        list.add(1);
        list.add(2);
        list.add(3);
        //만약 list * 2한 데이터를 요구한다면?  아래처럼 하면 된다.
        List<Integer> list2 = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            list2.add(list.get(i) * 2);
        }
        System.out.println(list);
        System.out.println(list2);
        // 이렇게 쓰는게 불편해서 stream이 나왔다.
        //map 길이 같은 리스트를 만드는 것.

        List<Integer> collect = list.stream().map(el ->  //map(a->)익명함수를 만드는것.
                el * 2                                      // el ->하나씩 꺼내서 보여줌.
        ).collect(Collectors.toList());                     //여기서 다시 배열에 넣어주는 것.
        System.out.println(collect);                        //그래서 배열로 나옴
        List<Integer> collect1 = list.stream().filter(el -> el % 2 == 0)
                .map(el -> el * 2)          // 이렇게 여러개를 할수도 있다.
                .collect(Collectors.toList());
        System.out.println(collect1);
        //filter -  거른다~ el - 하나씩 뽑아올건데 무엇을 리턴할건지만 다른것이다. el % 2 == 0이거면 리턴 아니면 리턴 없음?
        // 2로 나눠서 0인것을 뽑아내는것.

    }
}

나름대로 열심히 변화 과정을 체크해서 기록하고 복습을 하려고 했으나 아직 기초 지식이 부족해 수업에서 다룬 모듯것을 완벽하게 이해하지 못하고 있다고 생각이 든다. 역량을 키우며 다시 차근 차근 살펴보도록 해야겠다.

0개의 댓글