Java之stream流求字段累計(jì)和的3種方法總結(jié)
示例對(duì)象
首先,假設(shè)你有一個(gè)類Person,它有一個(gè)age字段:
public class Person {
private String name;
private int age;
// 構(gòu)造函數(shù)
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getter 和 Setter
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
方法1:使用mapToInt和sum
如果你想要計(jì)算所有人的年齡總和,可以使用mapToInt將Person對(duì)象流轉(zhuǎn)換成年齡的IntStream,然后使用sum方法計(jì)算總和:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Person> people = Arrays.asList(
new Person("Alice", 30),
new Person("Bob", 25),
new Person("Charlie", 35)
);
int totalAge = people.stream()
.mapToInt(Person::getAge) // 將Person對(duì)象轉(zhuǎn)換為int流,提取年齡字段
.sum(); // 計(jì)算總和
System.out.println("Total age: " + totalAge); // 輸出Total age: 90
}
}
方法2:使用reduce方法
你也可以使用reduce方法來(lái)累加某個(gè)字段的值:
int totalAge = people.stream()
.map(Person::getAge) // 將Person對(duì)象映射為年齡值
.reduce(0, Integer::sum); // 使用reduce方法累加年齡值,初始值為0
System.out.println("Total age: " + totalAge); // 輸出Total age: 90
方法3:使用collect和summingInt(Java 8或更高版本)
int totalAge = people.stream()
.collect(Collectors.summingInt(Person::getAge)); // 使用Collectors.summingInt收集器計(jì)算總和
System.out.println("Total age: " + totalAge); // 輸出Total age: 90
以上方法都可以用來(lái)計(jì)算一個(gè)列表中所有對(duì)象的某個(gè)字段的累計(jì)和。選擇哪種方法取決于你的具體需求和偏好。通常,使用mapToInt().sum()或collect(Collectors.summingInt())是最直接和高效的方式
附:根據(jù)某個(gè)字段的條件篩選并求和(BigDecimal求和)
BigDecimal reduceMorePayAmount = indemnityPayment.getRiPolicyPayeeIndemnitySet().stream()
.filter(riPolicyPayeeIndemnity -> riPolicyPayeeIndemnity.getIndemnityType().equals(IndemnityType.MORE_PAY.getValue()))
.map(RiPolicyPayeeIndemnity::getFeeAmount).reduce(BigDecimal.ZERO, BigDecimal::add);總結(jié)
到此這篇關(guān)于Java之stream流求字段累計(jì)和3種方法的文章就介紹到這了,更多相關(guān)Java stream流求字段累計(jì)和內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot使用JdbcTemplate操作數(shù)據(jù)庫(kù)
這篇文章主要介紹了SpringBoot使用JdbcTemplate操作數(shù)據(jù)庫(kù),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2018-07-07
Java簡(jiǎn)單計(jì)時(shí)的實(shí)現(xiàn)案例(可以用來(lái)限時(shí)循環(huán))
這篇文章主要介紹了Java簡(jiǎn)單計(jì)時(shí)的實(shí)現(xiàn)案例(可以用來(lái)限時(shí)循環(huán)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-08-08
Java多線程編程中使用Condition類操作鎖的方法詳解
Condition是java.util.concurrent.locks包下的類,提供了對(duì)線程鎖的更精細(xì)的控制方法,下面我們就來(lái)看一下Java多線程編程中使用Condition類操作鎖的方法詳解2016-07-07
Java使用itext生成復(fù)雜數(shù)據(jù)的pdf的示例代碼
Apache iText 是一個(gè)開源 Java 庫(kù),支持 PDF 文檔的開發(fā)和轉(zhuǎn)換,在本教程中,我們將學(xué)習(xí)如何使用 iText 開發(fā)可以創(chuàng)建、轉(zhuǎn)換和操作 PDF 文檔的 Java 程序,感興趣的小伙伴跟著小編一起來(lái)看看吧2024-12-12
java 獲取日期的幾天前,幾個(gè)月前和幾年前的實(shí)例
下面小編就為大家?guī)?lái)一篇java 獲取日期的幾天前,幾個(gè)月前和幾年前的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-10-10
在Spring Boot中實(shí)現(xiàn)文件上傳與管理的操作
在 Spring Boot 中實(shí)現(xiàn)文件上傳與管理非常簡(jiǎn)單,通過配置文件上傳、創(chuàng)建文件上傳、下載、列表和刪除接口,我們可以輕松地處理文件操作,結(jié)合前端頁(yè)面,可以提供一個(gè)完整的文件管理系統(tǒng),這篇文章主要介紹了在Spring Boot中實(shí)現(xiàn)文件上傳與管理,需要的朋友可以參考下2024-07-07
idea同時(shí)打開多個(gè)項(xiàng)目的圖文教程
這篇文章主要給大家介紹了idea同時(shí)打開多個(gè)項(xiàng)目的圖文教程,文章通過圖文結(jié)合的形式給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-02-02
Java interrupt()方法使用注意_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java interrupt()方法使用注意_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理,需要的朋友可以參考下2017-05-05

