如何在arrayList中搜索然后更改



所以我正在制作一个超市程序,允许添加产品并出售,到目前为止,我有这个:

class Product
{
String name;
double price;
int day;
int month;
int year;
int stock;
public Product(String name,double price,int day,int month,int year,int stock)
{
this.name=name;
this.price=price;
this.day=day;
this.month=month;
this.year=year;
this.stock=stock;
}
}
class SuperMarket{
protected String name;
protected int numMax;
private List<Product> pr;

public SuperMarket(String name,int numMax)
{
this.name=name;
this.numMax=numMax;
this.pr = new ArrayList<Product>();

}
public void addProduct() {
//deleted to post here
}

public void sellProduct()//its here i need help
{
Scanner sc=new Scanner(System.in);
System.out.println("What product do you want to sell?");
String name=sc.nextLine();

}

}

我想知道如何在产品列表中按名称搜索,然后将库存(减法-n(更改为销售该产品的n。

您可以使用Stream API按名称查找产品。通过检查产品名称来筛选列表,并获得第一个匹配项。

Optional<Product> product = productList.stream()
.filter(e -> e.name.equals(inputedName))
.findFirst();

然后可以检查是否找到产品,然后更新库存

if(product.isPresent()){
Product p = product.get();
p.stock = p.stock - numberOfSoldProduct;
}

建议对字段使用getter/setter。

如果您希望使用O(1(进行搜索,可以使用map。不过我不认为有必要列出这个清单。

public SuperMarket(String storeName,int storeId){
this.storeName = storeName;
this.storeId = storeId;
this.products = new ArrayList<Product>();
this.productByName = new HashMap<String, Product>();
}
public void addProduct(Product product) {
String productName = product.name;
if(productByName.containsKey(productName)){
Product existingProduct = productByName.get(productName);
existingProduct.stock += product.stock;
existingProduct.price = product.price;
}else{
productByName.put(productName, product);
products.add(product);
}
}
public void sellProduct(String productName, int count){
if(!productByName.containsKey(productName)){
System.out.println(productName + " is unavailable !!!");
return;
}
Product existingProduct = productByName.get(productName);
existingProduct.stock -= count;
if(existingProduct.stock <= 0){
productByName.remove(productName);
products.remove(existingProduct);
}
}

}

相关内容

最新更新