获取哈希集元素的总和(Java)

问题描述 投票:0回答:2

** 我不确定如何从哈希集中获取某些元素的总和,请帮忙** 我需要从费用中添加金额

我不确定这条线 - System.out.println("Total Amount Spent:"+ set1.addAll([1]);

这是我的代码,所需的输出也在下面给出:

import java.util.*;

class Expense implements Comparable<Expense>{
    
    String expenseCategory;
    Integer amount;
    
    
    public String getExpenseCategory() {
        return expenseCategory;
    }
    public void setExpenseCategory(String expenseCategory) {
        this.expenseCategory = expenseCategory;
    }
    public Integer getAmount() {
        return amount;
    }
    public void setAmount(Integer amount) {
        this.amount = amount;
    }
    
    
    
    public Expense(String expC , Integer amount) {
        this.expenseCategory=expC;
        this.amount = amount;
    }
    
    
    public String toString() {
        return expenseCategory+ " " +amount;
    }
        
    
    public int compareTo(Expense e) {
        if(amount>e.amount){    
            return 1;    
        }else if(amount<e.amount){    
            return -1;    
        }else{    
        return 0;    
        } 
    }
}
public class Main {
    
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        
        TreeSet<Expense> set1 = new TreeSet<Expense>();
        
        while(true) {
            System.out.println("Enter expense category");
            String expC = sc.next();
            System.out.println("Enter expense amount");
            String amt = sc.next();
            set1.add(new Expense(expC,Integer.valueOf(amt)));
            System.out.println("Do you want to continue(yes/no):");
            String cond = sc.next();
            if(cond.equals("no")) {
                break;
            }
        }
            System.out.println("Top spending categories");
            System.out.println("Category    Amount");
            Iterator x = set1.descendingIterator();
            
            while(x.hasNext()) {
                System.out.println(x.next());
            }
            
            
            System.out.println("Total Amount Spent:"+ set1.addAll([1]);//please help me figure out this part 
        
        
    }
    
}

输出应该是这样的:

Enter expense category
Rent
Enter expense amount
6000
Do you want to continue(yes/no):
yes
Enter expense category
Food
Enter expense amount
4500
Do you want to continue(yes/no):
yes
Enter expense category
Travel
Enter expense amount
2300
Do you want to continue(yes/no):
yes
Enter expense category
Mobile
Enter expense amount
700
Do you want to continue(yes/no):
no
Top spending categories
Category    Amount
Rent    6000
Food    4500
Travel    2300
Mobile    700
Total amount spent: 13500
java oop collections hashset linkedhashset
2个回答
1
投票

暂时我补充说: 主类中的一个 int 变量,每次我输入金额时都会总结这些值并在最后显示它。

class main{
    ...
    int tamount=0;
    ...
    tamount = tamount + Integer.valueOf(amt);

    ...
    System.out.println("Total Amount Spent:"+ tamount);
}

1
投票

addAll
用于将元素从
Collection
添加到
Set
。在这种情况下,您可以使用
IntStream#sum

set1.stream().mapToInt(Expense::getAmount).sum()
© www.soinside.com 2019 - 2024. All rights reserved.