Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从ArrayList中删除/更改特定对象_Java_Oop_Arraylist_Methods - Fatal编程技术网

Java 从ArrayList中删除/更改特定对象

Java 从ArrayList中删除/更改特定对象,java,oop,arraylist,methods,Java,Oop,Arraylist,Methods,我正在用Java为“硬件商店”构建一个简化的库存程序。我想按名称和数量将商品注册到一个数组中,如果商品售出,还需要删除或更改数量 我相信我已经完成了80%的工作。我就是不知道如何删除或更改存储后的对象。这与equals(objectobj)方法有关吗?我发现很难理解如何在我的案例中使用这种方法 硬件项的类: public class Items { private String item; private String quantity; public Items()

我正在用Java为“硬件商店”构建一个简化的库存程序。我想按名称和数量将商品注册到一个数组中,如果商品售出,还需要删除或更改数量

我相信我已经完成了80%的工作。我就是不知道如何删除或更改存储后的对象。这与
equals(objectobj)
方法有关吗?我发现很难理解如何在我的案例中使用这种方法

硬件项的类:

public class Items {

    private String item;
    private String quantity;

    public Items(){

    }

    public String getName() {
        return item;
    }

    public String getType() {
        return item;
    }

    public String getQuantity() {
        return quantity;
    }

    public void setItem(String item) {
        this.item=item;
    }


    public void setQuantity(String quantity) {
        this.quantity=quantity;
    }
}
--

公共类硬件{
公共静态void main(字符串[]args){
List allItems=new ArrayList();
扫描仪输入=新扫描仪(System.in);
智力选择;
while(true){
System.out.println(“库存\n”);
System.out.print(“1”)将新项目添加到您的库存中。\n“;
System.out.print(“2”)从库存中删除项目。\n“;
系统输出打印(“3”)更改项目的数量。\n“;
系统输出打印(“6.)退出\n”);
System.out.print(“\n输入菜单选项:”);
choice=input.nextInt();
扫描仪输入=新扫描仪(系统输入);
开关(选择){
案例1:
Items myItems=新项目();
系统输出打印项次(“项:”;
myItems.setItem(在.nextLine()中);
系统输出打印项次(“数量?”);
myItems.setQuantity(in.nextLine());
添加(我的项目);
系统输出打印项(allItems);
System.out.println(“库存包含以下项目:”);
对于(int i=0;i

}

您应该在Items类中实现
equals
方法,如下所示:

public boolean equals(Object object){
   if(this == object){
      return true;
   }
   if(object instanceof Items){
      Items newItem = (Item) object;
      return item.equals(newItem.item) && quantity.equals(newItem.quantity);
   }
   return false;
}

然后,对于删除和更改选项,使用用户输入创建一个
对象,并在
列表
中循环,将每个
对象与使用用户输入创建的对象进行比较,直到找到所需的对象,然后执行必要的操作。

您甚至不需要equals,但是它可以让你的代码更容易。只需循环浏览您的项目,并尝试查找具有用户输入的名称的项目。您必须将allItems传输到某个方法,该方法将从中删除所需的项目。比如说,您必须声明一些方法
deleteSpecificItem(列出所有项,字符串itemName)
然后声明新方法
replaceSpecificItemInList(列出所有项,字符串itemName,项目newItem)
谢谢您的回复。但是,如果创建了一个新对象,那么我还必须填写我要删除的对象的数量?for(int I=0;Istatic void deleteSpecificItem(List allItems,String itemName){Iterator iter=allItems.Iterator();while(iter.hasNext()){Items value=(Items)iter.next();if(Objects.equals(value.getName(),new String(itemName)){iter.remove();}}请告诉我您是否是初学者。剩下的我来教你。
public boolean equals(Object object){
   if(this == object){
      return true;
   }
   if(object instanceof Items){
      Items newItem = (Item) object;
      return item.equals(newItem.item) && quantity.equals(newItem.quantity);
   }
   return false;
}