如果你有一个数据集,希望按照某个字段进行分组,并计算每个分组中金额的总和,你可以使用Java的Stream API来实现。下面是一个示例代码:
假设你有一个包含以下数据的类Transaction
:
public class Transaction {
private String category;
private double amount;
public Transaction(String category, double amount) {
this.category = category;
this.amount = amount;
}
public String getCategory() {
return category;
}
public double getAmount() {
return amount;
}
}
现在,假设你有一个List<Transaction>
,其中包含了多个交易记录。你可以按照category
字段进行分组,并计算每个分组中金额的总和,可以按照以下方式实现:
import java.util.*;
import java.util.stream.Collectors;
public class GroupAndSum {
public static void main(String[] args) {
List<Transaction> transactions = new ArrayList<>();
transactions.add(new Transaction("category1", 100.0));
transactions.add(new Transaction("category2", 200.0));
transactions.add(new Transaction("category1", 50.0));
transactions.add(new Transaction("category3", 300.0));
transactions.add(new Transaction("category2", 150.0));
Map<String, Double> sumByCategory = transactions.stream()
.collect(Collectors.groupingBy(Transaction::getCategory, Collectors.summingDouble(Transaction::getAmount)));
System.out.println("Category\tSum");
for (Map.Entry<String, Double> entry : sumByCategory.entrySet()) {
System.out.println(entry.getKey() + "\t" + entry.getValue());
}
}
}
这个示例首先创建了一个List<Transaction>
来存储交易记录。然后,使用Java 8的Stream API将交易记录按照category
字段进行分组,并使用Collectors.summingDouble()
计算每个分组中金额的总和。最后,通过遍历结果的Map<String, Double>
,输出每个分组的category
和对应的总和。
运行上述代码,你将得到类似以下的输出:
Category Sum
category1 150.0
category2 350.0
category3 300.0
这表明按照分类分组后,每个分组中金额的总和。你可以根据自己的数据结构和字段名称作出相应的调整。
标签:category,Transaction,Java,transactions,求和,分组,new,public From: https://blog.51cto.com/u_16007699/6992725