我有一个:
主要班级, 运动课, sportList类 并提供变量看起来像运输成本的枚举类:BAT(“Bat”,13.99),Helmut(“Helmut”,4.99)......
当用户在主类中输入更多耗材时,它们会通过add()方法添加到arrayList(sportsList类)(这些基本上是要运出的齿轮对象) - 如果arrayList为空,则添加齿轮。 ..如果齿轮被进一步添加,则搜索arrayList以查找相同齿轮的副本,并且当发现齿轮的价格被添加到齿轮的现有值时,其包括仅应添加一次的运输值每个齿轮对象。
这很有效......但是由于我是java的新手,我想看看如何改进它? 谢谢大家!
public void add (Sport sport) {
if (sportList.size() == 0){
sportList.add(sport);
sportList.get(0).addShipValue(sport.supplies.getCost());
}else{
for (int index = 0; index <sportList.size() ; index++) {
if (sportList.get(index).supplies.getName().equals(sport.supplies.getName())) {
sportList.get(index).addShipValue(sport.getShipValue());
break;
}
if(index == sportList.size() - 1) {
sportList.add(sport);
sportList.get(index + 1).addShipValue(sport.supplies.getCost());
break;
}
}
}
}
答案 0 :(得分:0)
您没有使用正确的收藏品。你应该使用Map<String, Sport>
,其中关键是运动用品的名称,价值就是运动本身。
private Map<String, Sport> sportsByName = new HashMap<>();
public void add (Sport sport) {
sportsByName.merge(sport.supplies.getName(),
sport,
(oldSport, newSport) -> {
oldSport.addShipValue(newSport.getShipValue);
return oldSport;
});
}
按密钥isO(1)进行HashMap查找。在HashMap中添加一个新值也是O(1)。