欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java之stream流求字段累計(jì)和的3種方法總結(jié)

 更新時間:2025年09月12日 08:51:42   作者:冉成未來  
Java中Stream流用來幫助處理集合,類似于數(shù)據(jù)庫中的操作,下面這篇文章主要介紹了Java之stream流求字段累計(jì)和的3種方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

示例對象

首先,假設(shè)你有一個類Person,它有一個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對象流轉(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對象轉(zhuǎn)換為int流,提取年齡字段
                             .sum(); // 計(jì)算總和
        
        System.out.println("Total age: " + totalAge); // 輸出Total age: 90
    }
}

方法2:使用reduce方法

你也可以使用reduce方法來累加某個字段的值:

int totalAge = people.stream()
                     .map(Person::getAge) // 將Person對象映射為年齡值
                     .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

以上方法都可以用來計(jì)算一個列表中所有對象的某個字段的累計(jì)和。選擇哪種方法取決于你的具體需求和偏好。通常,使用mapToInt().sum()或collect(Collectors.summingInt())是最直接和高效的方式

附:根據(jù)某個字段的條件篩選并求和(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論