모여서 각자 코딩/2022 SW 아카데미 모각코

[SW 아카데미 모각코] 1주차 활동 정리

mirae.kwak 2022. 7. 8. 18:00
728x90

일시 : 7월 8일 금 15:00 ~ 18:00 [ Zoom ]

게더타운

 

Stream

  • java 8 이상 부터 사용 가능
  • 데이터의 연속
  • System.in / System.out 역시 stream
  • Collections 프레임워크에서 제공되는 stream()
  • Collections 추상체에서 사용할 수 없던 함수형 인터페이스를 사용할 수 있다.

 

고차함수 사용

: filter, map, foreach와 같은 고차함수(함수를 인자로 받는 함수)가 제공된다.

Arrays.asList(“A”, “AB”, “ABC”, “ABCD”, “ABCDE”)
    .stream()
    .map(s -> s.length())
    .filter(i -> I%2 == 1)
    .forEach(System.out::println);

 

Stream 생성

: iterator와 generate를 사용하여 stream을 만들 수 있다.

 

1. 배열을 stream으로 만들기

Arrays.asList(“A”, “AB”, “ABC”, “ABCD”, “ABCDE”)
    .stream()
    .map(s -> s.length())
    .filter(i -> I%2 == 1)
    .forEach(System.out::println);

=> stream() : List에 존재하는 함수로 인자값들을 사용해 stream으로 만들 수 있다.

 

IntStream s2 = Arrays.stream(new int[] {1, 2, 3});

=> int형 배열의 경우 primitive type이기 때문에 int에 대한 stream을 generic으로 만드는 것이 불가능하다.

=> IntStream 타입을 통해 int형 배열을 stream으로 생성할 수 있다.

 

IntStream s2 = Arrays.stream(new int[] {1, 2, 3}).boxed().toArray(Integer[]::new);

=> boxed()를 통해 primitive type 배열을 레퍼런스 타입으로 변경할 수 있다. (int -> Integer)

=> toArray()의 경우 인자값이 없다면 Object 타입으로 생성되어 인자로 Integer 지정을 해주어야한다.

 

 

2. generate 사용하기

Stream.generate( () -> 1).limit(10).forEach(System.out::println);

=> generate는 계속해서 1을 생성하기 때문에 limit을 통해 횟수 제한을 줄 수 있다.

 

 

3. iterator 사용하기

Stream.iterate(0, (i) -> i+1).limit(10);

=> iterate는 시드 값을 설정해주면 결과가 입력으로 들어온다. 

=> limit을 사용해 횟수 제한을 줄 수 있다.

728x90