[TIL] 2024-07-29

성장일기·2024년 7월 29일

회고

목록 보기
14/37

중요 학습 내용 [JAVA]

STREAM

  • 람다식을 활용해 코드 양도 줄고 간결하게 표현도 가능
  • pararell stream 사용 시, 병렬처리 가능
    • 병렬처리가 가능할 때, 시간복잡도 상 좋다.
    • 성능이 좋아진다.
  • 스트림은 원본을 변경하지 않는 읽기 전용

Detail

  • 병렬처리(parallel process with CPU)가 가능하다.
    • .parallelStream()을 통해 가능하다.
  • Arrays.stream()으로 배열을 stream으로 변환할 수 있다.

generation

  • 스트림 생성
  • java Stream<자료형> stream = Arrays.stream(배열자료형)
  • builder() pattern
    • builder는 static<T>로 구성된 메소드로, 호출 시 타입 파라미터를 메소드 호출 방식으로 전달
    • use: Stream.<>builder(). ... .build()
      • add() etc
  • iterate()
    • use:
          iterate().limit(endNum)
  • range() & rangeClosed()
  • boxed(): 기본 타입 스트림인 xxxstream을 박싱하여 wrapper 타입의 Stream<XXX>로 변환한다
    • uses:
      Stream<Double> doubleStream = new Random().doubles(5).boxed();
      doubleStream.forEach(value -> System.out.print(value + " "));
  • 문자열을 split 하여 Stream으로 생성
    • uses:
      Stream<String> splitStream =
          Pattern.compile(", ").splitAsStream("html, css, javascript");
      splitStream.forEach(System.out::println);

intermidiate

  • 원하는 결과를 만들기 위한 필터링, 매핑 등의 작업

  • filter(java.util.function.IntPredicate)

  • map(java.util.function.IntUnaryOperator)

  • flatMap(Function<? super T, ? extends Stream<? extends R>> mapper)

  • sorted()

  • sorted(Comparator<? super T> comparator)

    • Comparator를 구현하여 compare 메서드를 Overrding하여 사용 가능

정렬 방법 복습(compareator, compareable)
comparable: Collections.sort(List<OBJECT>)
comparator: Collections.sort(List<OBJECT>, new CLASS.compare)
OBJECT - compareTo overriding

terminal

  • 최종 결과를 만들어 내는 작업
  • forEach(java.util.function.Consumer<? super T> action):
    • consumer형 람다식을 Argument로 갖는다.
  • calculation
    • sum(), count(), max(), min(), etc..
  • reduce(IntBinaryOperator op)
  • reduce(int identity, IntBinaryOperator op)
  • reduce(U identity, BiFunction<U, ? super T, U> accumulator, BinaryOperator<U> combiner)
  • collect(Collector<? super T, A, R> collector)
  • match
    • anyMatch(Predicate<? super T> predicate)
    • allMatch(Predicate<? super T> predicate)
    • noneMatch(Predicate<? super T> predicate)

CAUTION

  • Lambda를 사용 시, 의존하지 않도록 사용하자.
    • 타 언어 적용이 어려울 수 있다.
profile
엔지니어로의 성장일지

0개의 댓글