在Java中更新arraylist方法

在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

我试图制作一个类似于removeMenu方法的代码,但我想制作另一个方法来更新我订购的菜单中的产品数量

餐厅控制员代码:

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(...)