java在没有特定属性的对象中访问模型的值
我可以使用“getTotalItemPrice”方法获得购物车中的所有物品,如下面所示
然而,我不确定这是否是一个好的方式或不采取获得总价格
我知道我可以设置在创建对象时已计算的总值。但是用一种方法得到一个总值对我来说很容易
请与我分享你的建议
public class CartModel {
private List<ItemModel> items;
public List<ItemModel> getItems() {
return items;
}
public void setItems(List<ItemModel> items) {
this.items = items;
}
public double getTotalItemPrice() {
double totalPrice = 0.0;
if (items != null && items.isEmpty()) {
for (ItemModel item : items) {
totalPrice += item.getPrice();
}
}
return totalPrice;
}
}
public class ItemModel {
private String item;
private double price;
private String currency;
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getCurrency() {
return currency;
}
public void setCurrency(String currency) {
this.currency = currency;
}
public String getItem() {
return item;
}
public void setItem(String item) {
this.item = item;
}
}
# 1 楼答案
你的方法更有意义。在需要时计算总数,而不是在构建对象时或每次项目更改时
# 2 楼答案
你可以做几件事:
你现在正在做的事情——在需要的时候计算总数。这在大多数情况下都很好
您可以做的另一件事是创建一个具有总值的字段,并在添加或删除项目时对其进行更新。这是一种缓存机制。但是,只有当遍历集合非常昂贵或者集合非常非常大时,这才有意义。在琐碎的情况下,这是不必要的
顺便说一下,我建议永远不要将集合设置为
null
,始终对其进行初始化,即private List<ItemModel> items = new ArrayList<>()
或类似的设置其次,您可以使用函数式编程按如下方式重写
getTotalItemPrice
方法:这将创建一个流来遍历
items
的每个元素。首先,项目被映射到它的价格,因此它被转换成一个具有double
的流,然后我们应用一个缩减操作,对流的所有元素求和