티스토리 뷰
들어가며
- List에 있는 Item들을 대상으로 고유한 ID별로 합계를 구해야 하는 상황이 발생했다.
문제 상황
- id와 duration을 가지는 MyClass가 있고 MyClass List을 받아 id별 duration의 합을 가지는 Map을 반환해야 한다.
class MyClass {
public String id;
public Float duration;
}
private Map<String, Float> sum(List<MyClass> list) {
return ????
}
해결방법
- 일단 코드부터 보자면 아래와 같다.
private Map<String, Float> sum(List<MyClass> list) {
return list.stream().collect(Collectors.toMap(e -> e.id, e -> e.duration, Float::sum));
}
- 좀더 자세하게 보자면 Collector.toMap() 메서드는
- 첫번째 인자에 의해서 Key가 결정되는 맵을 작성함
- 두번째 인자는 맵의 Value에 스트림 요소를 매핑함
- 세번째 인자는 Key에 충돌이 있는 경우 Value를 merge하는 연산자
- 세번째 인자에 Float::sum 연산자를 넘겨줌으로써 id가 동일한 경우 duration을 합산하도록 Map을 작성한 것이다.
참고
끝으로
이 글이 도움이 되었다면, Google 광고 한번씩 클릭 부탁 드립니다. 🙏🙏🙏
광고 클릭은 많은 힘이 됩니다!
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
(Java) Java 문자 메시지 발송 기능 구현 방법 (3) | 2020.02.15 |
---|---|
(JavaFX) Chart에 값(series)이 많을 때 UI 성능 이슈 해결 방법 (0) | 2020.02.15 |
(Java 8) Stream API 이용하여 여러 List 합치기 (0) | 2020.02.15 |
(Java) Windows System Sound 음소거 (Mute) 구현 방법 (0) | 2020.02.07 |
[Java] 특정파일 write(line 추가)시에 실시간 모니터링 (1) | 2019.10.21 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 일본여행
- effective java
- JavaFX
- intelij
- 자전거
- java
- TableView
- 자바
- JavaFX Window Close
- JavaFX Table View
- 배낭여행
- effectivejava
- windows
- 일본 자전거 여행
- JavaFX 종료
- 배낭 여행
- 스프링부트
- 이펙티브
- 일본 배낭여행
- 이펙티브 자바
- 방통대 과제물
- 이펙티브자바
- springboot
- 일본 여행
- 자전거 여행
- JavaFX 테이블뷰
- git
- Java UI
- 인텔리제이
- 텐트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함