在Java中更新arraylist方法
我试图制作一个类似于removeMenu方法的代码,但我想制作另一个方法来更新我订购的菜单中的产品数量 餐厅控制员代码:在Java中更新arraylist方法,java,jtable,Java,Jtable,我试图制作一个类似于removeMenu方法的代码,但我想制作另一个方法来更新我订购的菜单中的产品数量 餐厅控制员代码: Menu coffee = new Menu("Coffee", 30); Menu icedTea = new Menu("Iced Tea", 50); Menu hotChoco = new Menu("Hot Chocolate", 30); /* constructor ommittet. */ pr
Menu coffee = new Menu("Coffee", 30);
Menu icedTea = new Menu("Iced Tea", 50);
Menu hotChoco = new Menu("Hot Chocolate", 30);
/*
constructor ommittet.
*/
private ArrayList<Menu> menulist;
public void removeMenu(Menu menumodel) {
for (Menu temp : menulist) {
if (temp.equals(menumodel)) {
menulist.remove(temp);
break;
}
}
}
public void updateMenu(int updateQuant) {
//menulist.set(3, updateQuant);
}
}
}
我对餐厅控制器类中的updateMenu方法有问题,有人能帮助我吗?首先,你必须了解arraylist的基本用法 您的remove实现有一个错误的假设:
public void removeMenu(Menu menumodel) {
for (Menu temp : menulist) {
if (temp.equals(menumodel)) {
menulist.remove(temp);
break;
}
}
}
等于:
public void removeMenu(Menu menumodel) {
menulist.remove(temp);
}
Arraylist的实现将使用hashCode()和equals()来标识Arraylist中的正确对象,并将其删除。因此,您不必迭代数组
另请参见如何从列表中删除对象,该列表是迭代的:
要更新arraylist中的对象,首先必须检索对象,然后更新它。这是因为arrayslist存储对对象的引用,而不是副本
因此,更新方法必须识别要更新的对象,然后相应地设置数量:
在我的示例中,您通过域名识别对象:这里是“菜单名”,例如咖啡
public void updateMenu(int updateQuant, String name) {
for (Menu temp : menulist) {
if (temp.getName().equals(name)) {
temp.setQuant(updateQuant);
break;
}
}
}
此外,您已经在UpdateProduct EventListener中获得了正确的对象:
selectedProduct
这与UpdateNu方法可以找到的对象相同。因此,您可以调用
selectedProduct.setQuant(...)
在这里,它也将更新arraylist。这是因为在不同的变量上存在对对象的引用。两者都引用同一对象。什么问题?
selectedProduct.setQuant(...)