Stream API에서 Sum() 함수를 사용하려면 기본형 특화 스트림(Primitive Type) 스트림을 사용해야한다.
- 정수형 원시스트림
- IntStream
- LongStream
- DoubleStream
목표
- List 내의 map 내의 int value를 가진 특정 키를 찾아 합하고 싶다
코드
// 1. 순회할 리스트
List<HashMap> testList = testDAO.selectTestList(paramMap);
// testList : [{"cnt": 1}, {"cnt": 2}, {"cnt": 3}, {"cnt": 4}]
// 2. 리스트 내 Map 순회
int totalCnt = testList.stream()
// 3. Map 내에서 더할 대상인 cnt를 찾아 IntStream으로 변환
.mapToInt(i -> Integer.parseInt(i.get("cnt").toString()))
// 4. Stream의 총합 구하기
.sum();
System.out.println(totalCnt); // Result : 10 (1+2+3+4)
Ref.
[JAVA] Stream
사용이유 for과 Iterator의 경우 코드가 너무 길고 알아보기 힘들며 재사용이 떨어짐, 데이터소스마다 다른 방식으로 다뤄야 한다는 문제점도 있음(Collection.sort(), Arrays.sort()) 이런 문제를 해결하기
peonyf.tistory.com
Java Stream 성능비교: Reduce() vs mapToInt().sum()
Collection 의 합을 구하는 방법 Collection 의 합을 구하는 방법은 reduce 와 sum 두 가지가 존재합니다. 단, Stream 에서 sum() 을 사용하려면 IntStream, LongStream, DoubleStream 와 같은 기본형 (Primitive Type) 특화 스
bcp0109.tistory.com
'Language > JAVA' 카테고리의 다른 글
[iBatis] iterate (0) | 2024.06.14 |
---|---|
테스트 도구 JUnit5 (0) | 2024.03.14 |
Stream API (1) | 2024.02.27 |
[Java] Request Parameter 출력 (0) | 2024.01.15 |
[JAVA] 반복문에서 배열요소 삭제 (2) | 2023.11.02 |