반응형
Java8 : 목록에있는 개체의 특정 필드 값 합계
Obj 클래스가 있다고 가정하십시오.
class Obj{
int field;
}
Obj
인스턴스 목록 , 즉 List<Obj> lst
.
이제 필터링 기준 (예 : 객체 의 경우 기준은 ) 아래 field
목록 lst
에있는 객체 의 int 필드 값 합계를 스트림과 함께 Java8에서 어떻게 찾을 수 있습니까?o
o.field > 10
넌 할 수있어
int sum = lst.stream().filter(o -> o.getField() > 10).mapToInt(o -> o.getField()).sum();
또는 (메소드 참조 사용)
int sum = lst.stream().filter(o -> o.getField() > 10).mapToInt(Obj::getField).sum();
다음 collect
과 같은 적절한 합산 수집기를 사용할 수도 있습니다.Collectors#summingInt(ToIntFunction)
돌려
Collector
정수 값 함수의 합을 생성하는 입력 요소에 적용 하였다. 요소가 없으면 결과는 0입니다.
예를 들면
Stream<Obj> filtered = list.stream().filter(o -> o.field > 10);
int sum = filtered.collect(Collectors.summingInt(o -> o.field));
당신은 시도 할 수 있습니다
int sum = list.stream().filter(o->o.field>10).mapToInt(o->o.field).sum();
시험:
int sum = lst.stream().filter(o -> o.field > 10).mapToInt(o -> o.field).sum();
및 getField () 메소드가 있는 Obj
엔티티의 경우 Java 8에서 field
다음을 사용할 수 있습니다.
List<Obj> objs ...
Stream<Obj> notNullObjs =
objs.stream().filter(obj -> obj.getValue() != null);
Double sum = notNullObjs.mapToDouble(Obj::getField).sum();
반응형
'Nice programing' 카테고리의 다른 글
여러 줄에 사전 pprint (0) | 2020.12.07 |
---|---|
package-info.java가 유용한 이유는 무엇입니까? (0) | 2020.12.07 |
여러 window.onload 이벤트 추가 (0) | 2020.12.07 |
실행중인 프로세스와 해당 기호 테이블의 코어 덤프를 얻을 수 있습니까? (0) | 2020.12.07 |
Python의 순환 종속성 (0) | 2020.12.07 |