Java中如何计算TreeSet内Expense对象的金额总和?
解决TreeSet中Expense对象金额求和问题
你的set1.addAll([1])用法完全错误,addAll()是用来向集合批量添加元素的方法,和计算总和毫无关系。以下是几种正确的总支出计算方式:
方式1:增强for循环遍历累加
直接遍历TreeSet里的每个Expense对象,逐个累加金额:
double totalExpense = 0.0; for (Expense expense : set1) { totalExpense += expense.getAmount(); // 假设Expense类有getAmount()方法获取金额属性 } System.out.println("总支出:" + totalExpense);
方式2:Java 8+ Stream API简化实现
用流操作可以更简洁地完成求和:
double totalExpense = set1.stream() .mapToDouble(Expense::getAmount) .sum(); System.out.println("总支出:" + totalExpense);
补充说明
- 确保你的
Expense类已正确实现排序逻辑(因为TreeSet依赖排序),比如按金额降序的示例实现:
public class Expense implements Comparable<Expense> { private String category; private double amount; // 构造方法、getter/setter方法省略 @Override public int compareTo(Expense other) { // 按金额降序排列 return Double.compare(other.getAmount(), this.getAmount()); } }
- 若你是通过自定义比较器创建的TreeSet,只需保证排序逻辑符合需求即可,遍历求和不受排序顺序影响。
内容的提问来源于stack exchange,提问作者Tharun S M
相关产品推荐
相关产品推荐

