Como posso remover corretamente um objeto de ArrayList?
Estou tentando remover um objeto de um ArrayList. Cada objeto Item possui 3 atributos; 1. itemNum 2. info 3. custo. Eu também tenho 3 classes, 1. Classe de item define os itens individuais armazenados no catálogo. 2. A classe do catálogo mantém a lista dos objetos Item. 3 Classe cliente com método principal. Eu tenho os conjuntos e obtém na classe Item e tenho o ArrayList no catálogo. No cliente, eu tenho um prompt para “entrar no itemNum para remover. Como faço para remover corretamente um objeto Item da ArrayList com base em uma pesquisa por um itemNum? Abaixo está meu código e o que eu tentei até agora.
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
// abaixo estão os set / gets para o itemNum. Eu também tenho sets / gets para custo e info, mas escolho não incluir fazer no espaço
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
// abaixo é minha classe 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
}
// abaixo é main. Recebe informações do usuário sobre o itemNum, informações e custo
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
Ele compila bem, mas não é removido com base no índice encontrado. Qualquer ajuda seria ótimo.