반응형
리스트 내 객체의 특정 필드의 합계 값
수업이 있다고 가정하다Obj
:
class Obj {
int field;
}
...그리고 당신이 가지고 있는 리스트는Obj
예를 들어,List<Obj> lst
.
이제 스트림에서 int 필드 값의 합계를 찾으려면 어떻게 해야 합니까?field
리스트의 오브젝트로부터lst
필터링 기준(예를 들어 객체의 경우)에 따라o
기준은 다음과 같습니다.o.field > 10
)?
할수있습니다
int sum = lst.stream().filter(o -> o.getField() > 10).mapToInt(o -> o.getField()).sum();
또는 (Method 참조 사용)
int sum = lst.stream().filter(o -> o.getField() > 10).mapToInt(Obj::getField).sum();
할 수도 있습니다.collect
적절한 합계 수집기를 사용하여
a를 반환한다.
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();
Java 8에서는Obj
와의 관계.field
및 getField() 메서드를 사용할 수 있습니다.
List<Obj> objs ...
Stream<Obj> notNullObjs =
objs.stream().filter(obj -> obj.getValue() != null);
Double sum = notNullObjs.mapToDouble(Obj::getField).sum();
다음 방법을 사용할 수 있습니다. "IntSummaryStatistics"
IntSummaryStatistics insum = li.stream().filter(v-> v%2==0).mapToInt(mapper->mapper).summaryStatistics();
언급URL : https://stackoverflow.com/questions/23110853/sum-values-from-specific-field-of-the-objects-in-a-list
반응형
'programing' 카테고리의 다른 글
jpa를 사용하여 동일한 테이블의 mariadb를 선택하십시오. (0) | 2022.10.28 |
---|---|
많은 '그렇지 않은 경우' 문장을 보다 깔끔한 접근법으로 변환 (0) | 2022.10.28 |
날짜를 타임스탬프로 변환하는 방법 (0) | 2022.10.18 |
데이터베이스 mysql에서 mongoDb로 변환 (0) | 2022.10.18 |
Python에서 메서드를 매개 변수로 전달하려면 어떻게 해야 합니까? (0) | 2022.10.18 |