Я пытаюсь удалить объект из ArrayList. Каждый объект Item имеет 3 атрибута; 1. itemNum 2. info 3. стоимость. У меня также есть 3 класса: 1. Класс предмета определяет отдельные элементы, хранящиеся в каталоге. 2. Класс Catalog поддерживает список объектов Item. 3 Класс клиента с основным методом. У меня есть наборы и попадает в класс Item, и у меня есть ArrayList в Каталоге. В клиенте у меня есть запрос «Ввести в itemNum для удаления. Как правильно удалить объект Item из ArrayList на основе поиска itemNum? Ниже мой код и то, что я пробовал до сих пор.Как правильно удалить объект из ArrayList?
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
// ниже приведено/установлено значение itemNum. У меня также есть наборы/получает за стоимости и информации, но решили не включать делать в космос
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
// ниже мой каталог Класс
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
}
// ниже основной , Он получает входные данные от пользователя относительно itemNum, информация и стоимость
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
Он отлично компилируется, но не удалить на основе найденного индекса. Любая помощь будет большой.
Что такое идентификаторы элементов, содержащихся в вашем каталоге, и какие идентификаторы вы вводили для удаления – gefei
Я думаю, вам следует реализовать конструктор с тремя аргументами для вашего класса, а не с перегруженным. – UrsulRosu
Кроме того, ваши объекты не являются неизменными. Это не очень хороший стиль. – sk2212