啊,好吧...我编写代码时考虑了已经存在的答案(我很无聊)...
你在这里:
public class Helper {
private static List<MyData> addNewData(List<MyData> listOfData, MyData myData) {
for (int i = 0; i <= listOfData.size(); i++) {
if (listOfData.get(i).getName().equalsIgnoreCase(myData.getName())) {
listOfData.get(i).setQuantity(listOfData.get(i).getQuantity() + myData.getQuantity());
break; //the data with the same name is found
} else {
listOfData.add(myData);
break; //also necessary break!!!
}
}
return listOfData;
}
private static void printData(List<MyData> myData){
myData.forEach(System.out::println);
System.out.println("______________________");
}
public static void main(String[] args) {
//test data
List<MyData> testData = new ArrayList<>();
testData.add(new MyData("chair", 15.0, 44));
testData.add(new MyData("bottle", 0.25, 119));
System.out.println("Original data: "); printData(testData);
//try to add new item (with new name)
addNewData(testData, new MyData("glass", 1.1, 10));
//print the new data
System.out.println("New List: "); printData(testData);
//try to add new 'existing' item
addNewData(testData, new MyData("chair", 17.0, 4));
//print the new - new data
System.out.println("NEW new data: "); printData(testData);
}
static class MyData {
private String name;
private double price;
private int quantity;
//constructor without parameters
public MyData() {
this.setName("");
this.setPrice(0.0d);
this.setQuantity(0);
}
//constructor with parameters
public MyData(String name, double price, int quantity) {
this.setName(name);
this.setPrice(price);
this.setQuantity(quantity);
}
//getters, setters...
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
@Override
public String toString(){
return this.name + ", " + this.price + ", " + this.quantity;
}
}
}
输出是:
Original data:
chair, 15.0, 44
bottle, 0.25, 119
______________________
New List:
chair, 15.0, 44
bottle, 0.25, 119
glass, 1.1, 10
______________________
NEW new data:
chair, 15.0, 48
bottle, 0.25, 119
glass, 1.1, 10
______________________
请注意,椅子的价格没有变化(也可以这样做......)!