Language/JAVA

Stream API 2 : Collection 합 구하기

idleday 2024. 5. 31. 15:12

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