¿Cómo puedo eliminar correctamente un objeto de ArrayList?
Estoy intentando eliminar un objeto de un ArrayList. Cada objeto del artículo tiene 3 atributos; 1. itemNum 2. info 3. costo. También tengo 3 clases, 1. La clase de artículo define los artículos individuales almacenados en el catálogo. 2. La clase de catálogo mantiene la lista de los objetos del artículo. 3 Clase de cliente con método principal. Tengo los conjuntos y me meto en la clase Item y tengo el ArrayList en el Catálogo. En el Cliente, tengo un mensaje para "Ingresar en el itemNum para eliminar. ¿Cómo elimino correctamente un objeto Item de ArrayList en función de una búsqueda de un ItemNum? A continuación se muestra mi código y lo que he intentado hasta ahora.
Public class Item
{
private int itemNum;
private String info;
private double cost;
private int itemNum;
public Item()
{ //start constructor
itemNum = 0; //default values
info = "x";
cost = 0;
} //end constructor
public CatalogItem(int newItemNum, String newInfo, double newCost)
{ //start overload constructor
this.itemNum = newItemNum;
this.info = newInfo;
this.cost = newCost;
} //end overload constructor
// abajo están los sets / gets para itemNum. También tengo sets / obtiene por costo e información, pero elijo no incluir hacer al espacio
public int getItemNum()
{ //start itemNum accessor
return itemNum;
} //end getItemNum
public void setItemNum(int newItemNum)
{ //start itemNum mutator
this.itemNum = newItemNum;
} //end setItemNum
} //end Item class
public boolean equals(CatalogItem obj)
{ //start equals
if (itemId == obj.itemId)
return true;
else
return false;
} //end equals
// abajo está mi clase de catálogo
import java.util.*;
public class Catalog
{ //start class
private ArrayList<CatalogItem> listOfObjects = new ArrayList<CatalogItem>(100); //creates ArrayList
Item newItem = new Item(newItemNum, newInfo, newCost);
public void remove(int id)
{ //start remove
int item = id;
for (int index = 0; index < listOfObjects.size(); index++)
if (newItem.getItemId() == item) //if item in the inventory matches the item number passed
listOfObjects.remove(index); //removes based on index, I’ve also tried listOfObjects.remove(item);
/* I’ve also tried an enhanced for loop
for (CatalogItem obj : listOfObjects)
if (newItem.getItemId() == item)
listOfObjects.remove(newItem); */
} //end remove
}
// abajo es main. Recibe información del usuario en relación con el artículo Número, información y costo.
import java.util.*; //allows use of Scanner class
public class Client
{ //start client class
public static void main(String[] args)
{ //start main
Catalog serv = new Catalog(); //creates instance of Catalog class
Scanner scan = new Scanner(System.in); //creates instance of Scanner class called scan
System.out.print("\nEnter in the Item ID you want to remove: ");
id = scan.nextInt();
serv.remove(id); //sends id to Catalog Class to be removed
} //end main
} //end class
Se compila bien, pero no se elimina según el índice encontrado. Cualquier ayuda sería genial.