** 我不确定如何从哈希集中获取某些元素的总和,请帮忙** 我需要从费用中添加金额
我不确定这条线 - 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
暂时我补充说: 主类中的一个 int 变量,每次我输入金额时都会总结这些值并在最后显示它。
class main{
...
int tamount=0;
...
tamount = tamount + Integer.valueOf(amt);
...
System.out.println("Total Amount Spent:"+ tamount);
}
addAll
用于将元素从 Collection
添加到 Set
。在这种情况下,您可以使用IntStream#sum
。
set1.stream().mapToInt(Expense::getAmount).sum()