공부공부

공부공부-230506

nayoon 2023. 5. 7. 01:05

Stream API sum

https://bcp0109.tistory.com/299

 

Stream API를 이용해서 Collection의 합을 구하는 방법은 2가지가 있다.

 

reduce, sum 둘 중 하나를 사용하는 것인데

 

reduce(초기값, 연산)

 

초기값을 시작으로 Collection을 돌며 입력한 연산을 진행한다.

Stream.of(1, 2, 3).reduce(0, Integer::sum);

 

sum()

 

sum 메소드를 사용할 때는 IntStream, DoubleStream, LongStream과 같은 기본형(int, double, long) 특화 스트림을 사용해야 한다.

 

그래서 mapToInt, mapToDouble, mapToLong 메소드를 사용해서 기본형을 객체로 수정한 후 연산을 진행한다.

IntStream.range(1, 3).sum();

Stream.of(1, 2, 3).mapToInt(e -> e).sum();

@FunctionalInterface

https://bcp0109.tistory.com/313

 

함수형 인터페이스는 추상 메소드가 오직 하나인 인터페이스를 말한다.

추상 메소드가 하나라는 것은 default method나 static method는 여러 개 존재해도 된다는 뜻이다.

 

@FunctionalInterface 어노테이션을 사용하면 해당 인터페이스가 함수형 인터페이스가 맞는지 검증해준다.

어노테이션을 사용하지 않아도 상관없지만, 인터페이스 검증과 유지보수를 위해 사용하는 게 좋다.


boxed

Returns a Stream consisting of the elements of this stream, each boxed to an Integer.

IntStream을 Integer로 각각 박싱한 Stream으로 반환한다.

IntStream.range(1, 5).boxed().map(e -> e)

// 정의
public final Stream<Integer> boxed() {
  return mapToObj(Integer::valueOf, 0);
}

 

 

 

'공부공부' 카테고리의 다른 글

공부공부-230508  (0) 2023.05.08
공부공부-230507  (0) 2023.05.07
공부공부-230505  (0) 2023.05.05
공부공부-230419  (0) 2023.04.21
공부공부-230410  (0) 2023.04.12