Wie kann ich ein Objekt korrekt aus ArrayList entfernen?
Ich versuche, ein Objekt aus einer ArrayList zu entfernen. Jedes Item-Objekt hat 3 Attribute. 1. itemNum 2. info 3. kosten. Ich habe auch 3 Klassen, 1. Artikelklasse definiert die einzelnen im Katalog gespeicherten Artikel. 2. Die Katalogklasse verwaltet die Liste der Artikelobjekte. 3 Client-Klasse mit Hauptmethode. Ich habe die Sätze und erhält in der Einzelteilklasse und ich habe das ArrayList im Katalog. Im Client werde ich aufgefordert, die zu entfernende itemNum einzugeben. Wie entferne ich ein Item-Objekt basierend auf einer Suche nach itemNum korrekt aus der ArrayList? Unten ist mein Code und was ich bisher ausprobiert habe.
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
// unten ist die Menge / gets für itemNum. Ich habe auch Sets / Gets für Kosten und Informationen, entscheide mich aber, do to space nicht einzuschließen
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
// unten ist meine Katalogklasse
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
}
// unten ist main. Es erhält Eingaben vom Benutzer in Bezug auf die Artikelnummer, Informationen und Kosten
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
Es wird problemlos kompiliert, jedoch nicht basierend auf dem gefundenen Index entfernt. Jede Hilfe wäre toll.