Java 使用用户输入从数组列表中删除对象

Java 使用用户输入从数组列表中删除对象,java,object,arraylist,Java,Object,Arraylist,如果我在一个数组列表中有10个对象,并且我想根据userinput删除一个特定的对象,我该如何做 public ArrayList<SmallItem> Backpack = new ArrayList<SmallItem>(); Scanner t = new Scanner(System.in); String userInput = t.next(); public void dropItemByName() { if(Backpack.contains(

如果我在一个数组列表中有10个对象,并且我想根据userinput删除一个特定的对象,我该如何做

public ArrayList<SmallItem> Backpack = new ArrayList<SmallItem>();
Scanner t = new Scanner(System.in);
String userInput = t.next();

public void dropItemByName() {
    if(Backpack.contains(t)) {
          Backpack.remove(item);
        }

    }
public ArrayList Backpack=new ArrayList();
扫描器t=新扫描器(System.in);
字符串userInput=t.next();
public void dropItemByName(){
if(背包内含物(t)){
背包。移除(物品);
}
}

除非您在
背包
中实际搜索
t
,否则您不想检查
Backpack.contains(t)
t
是您的
扫描仪
对象本身,而不是输入

如果希望用户输入要删除的对象的索引,则需要将
userInput
设置为
int
,并执行以下操作:

if (userInput < Backpack.size()) {
    Backpack.remove(userInput);
}

此示例将删除
Backpack
中的第一个
SmallItem
,它具有与
userInput
匹配的
name
。如果您想让它删除
Backpack
中的每个
SmallItem
,而不是第一个
name
值,只需删除
break
语句。

如果我将其写入,我想您想从列表中删除该项(t)

因此,您必须通过变量(t或用户输入)更改变量(项),如下所示:

字符串userInput=t.nextline()

public void dropItemByName(){


用户是否输入了一个对象或对象本身的索引?考虑使用<代码> MAP>代码>而不是<代码>列表>代码>。ArayLIST和USER输入之间有什么联系?
for (int i=0; i<Backpack.size(); i++) {
    if (Backpack.get(i).name.equals(userInput) {
        Backpack.remove(i);
        break;
    }
}
if(Backpack.contains(userInput)) {
      Backpack.remove(userInput);
    }

}