【发布时间】:2018-07-18 02:25:50
【问题描述】:
假设我有一个 Flight 对象列表
public class Flight {
private int passengers;
private int price
...
//getters and Setters
}
List<Flight> flightList = new ArrayList<Flight>();
现在我需要累积每位乘客的价格和价格,因为我以后必须能够处理这两个信息。所以我会创建两种方法:
public int calculatePrice(List<Flight> flightList) {
int price = 0;
for (Flight flight : flightList) {
price = price + flight.getPrice();
}
return price;
}
public int calculatePricePerPassengers(List<Flight> flightList) {
int pricePerPassenger = 0;
for (Flight flight : flightList) {
pricePerPassenger = (pricePerPassenger) + (flight.getPrice() / flight.getPassgers());
}
return pricePerPassenger;
}
我有 4-5 种相同类型的方法。我不确定是否有太多冗余,因为我将 for 循环调用了 4-5 次,我可以轻松地在一个 for 循环中完成所有操作,但这会产生多个返回值的效果。那么这是合适的方式吗? (只是一个虚拟的例子)
【问题讨论】:
-
对不起 - 但这不是重复,也不是要返回多个值。更多的是关于冗余和缓存,这可能是这里的解决方案。 OP 提到多个返回值只是作为他认为采取的方法的副作用。
-
创建一个对象,其中包含您要返回的所有字段,并在循环中使用该对象并将其返回您以后需要的所有信息。
-
您可以迭代一次并收集所有需要的信息
-
一种解决方案是使用一个函数和一个循环,您可以在其中计算所需的所有可能值。作为返回值,您将只返回用户请求的值,以及您要保存的所有其余值,但如果数据正在更改,您必须更新此缓存数据,所以有一些标志“needsUpdate”,照着做。
-
只需将需要计算的字段添加到 Flight 类中,然后在一个循环中完成。
标签: java oop arraylist methods