Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

439
Vistas
Actualizar método arraylist en Java

Estoy tratando de hacer un código similar a este método removeMenu pero quiero hacer otro método que actualice la cantidad del producto en el menú que he pedido.

Código para controlador de restaurante:

 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); } } }

clase de restaurante

 RestaurantController controller1 = new RestaurantController(); private void DeleteProductActionPerformed(java.awt.event.ActionEvent evt) { selectedProduct = controller1.getMenulist().get(JTableOrderReceived.getSelectedRow()); if (selectedProduct != null) { int ans = JOptionPane.showConfirmDialog(this, "The selected product will be removed! ", "DELETE PRODUCT", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); if (ans == JOptionPane.YES_OPTION) { controller1.removeMenu(selectedProduct); refTable(); } } } private void UpdateProduct(java.awt.event.ActionEvent evt) { selectedProduct controller1.getMenulist().get(JTableOrderReceived.getSelectedRow()); if (selectedProduct != null) { int parseQuant = (int) selectedProduct.getQuantity(); String uQuant = JOptionPane.showInputDialog(this, "Update quantity " + selectedProduct.getItemName() + "\nPrice: " + selectedProduct.getPrice() + "\nCurrent order: " + parseQuant); int nQuant = Integer.parseInt(uQuant); controller1.updateMenu(nQuant); refTable(); } }

Tengo problemas con el método updateMenu en la clase de controlador de restaurante, ¿alguien puede ayudarme?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

En primer lugar, debe leer sobre el uso básico de una lista de arreglos.

Su implementación de eliminación tiene una suposición incorrecta:

 public void removeMenu(Menu menumodel) { for (Menu temp : menulist) { if (temp.equals(menumodel)) { menulist.remove(temp); break; } } }

es igual a:

 public void removeMenu(Menu menumodel) { menulist.remove(temp); }

La implementación de Arraylist usará hashCode() y equals() para identificar el objeto correcto dentro de la lista de arreglos y eliminarlo por usted. Por lo tanto, no tiene que iterar sobre la matriz.

Consulte también cómo eliminar un objeto de una lista, que se itera: Llamar a eliminar en bucle foreach en Java

Para actualizar un objeto dentro de la lista de arreglos, primero debe recuperar el objeto y luego actualizarlo. Esto se debe a que arrayslist almacena una referencia al objeto y no una copia.

Por lo tanto, su método de actualización debe identificar el objeto para actualizar y luego establecer la cantidad en consecuencia:

En mi ejemplo, identifica el objeto por nombre de dominio: aquí "nombre del menú", por ejemplo. Café.

 public void updateMenu(int updateQuant, String name) { for (Menu temp : menulist) { if (temp.getName().equals(name)) { temp.setQuant(updateQuant); break; } } }

Además, ya obtiene el objeto correcto dentro de su UpdateProduct EventListener:

 selectedProduct

Este es el MISMO objeto que encontraría el método updateMenu. Así puedes invocar

 selectedProduct.setQuant(...)

aquí y también actualizará la lista de arreglos. Esto se debe a que hay una referencia al objeto en diferentes variables. Ambos hacen referencia al mismo objeto.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda