Java 如何在迭代器中对getter方法中的值求和?
我试图使用迭代器对getter方法(从ArrayList中绘制值)中的数值求和 有关职能:Java 如何在迭代器中对getter方法中的值求和?,java,oop,iterator,sum,Java,Oop,Iterator,Sum,我试图使用迭代器对getter方法(从ArrayList中绘制值)中的数值求和 有关职能: public void overallTotal() { Iterator<Customer> customers = model.getCustomerIterator(); while (customers.hasNext()) { Customer customer = customers.next(); int sum = 0;
public void overallTotal()
{
Iterator<Customer> customers = model.getCustomerIterator();
while (customers.hasNext())
{
Customer customer = customers.next();
int sum = 0;
sum = customer.getTotalForAllOrders() + sum;
System.out.println(sum);
}
}
订单:
public class Order
{
private ArrayList<LineItem> lineItems;
public Order()
{
lineItems = new ArrayList<LineItem>();
}
public int getTotal()
{
int total = 0;
for (LineItem item : lineItems)
{
total += item.getSubTotal();
}
return total;
}
}
公共类秩序
{
私有ArrayList行项目;
公共秩序()
{
lineItems=newarraylist();
}
公共int getTotal()
{
int-total=0;
用于(行项目:行项目)
{
合计+=项目。getSubTotal();
}
返回总数;
}
}
迭代器:
public Iterator<Customer> getCustomerIterator()
{
return customers.iterator();
}
公共迭代器getCustomerInterator()
{
return customers.iterator();
}
如果我正确理解您的问题,您只需在while循环外初始化sum,您只需在作用域中断后重新说明变量。如果我正确理解您的问题,您只需在while循环外初始化sum,你只是在作用域中断后重新定义变量。如果你有流,你可以做long sum=model.getCustomerStream().flatMapToLong(c->c.stream().mapToLong(o->o.getSubTotal()).sum();
如果你有流,你可以做long sum=model.getCustomerStream().flatMapToLong(c->.stream().maptolog(o->.getSubTotal()).sum();
public Iterator<Customer> getCustomerIterator()
{
return customers.iterator();
}