2015-11-02 36 views
0

如果我有一个数组列表中的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); 
     } 

    } 
+0

是用户输入的对象或对象本身的索引? – AbtPst

+1

考虑使用'Map'而不是'List'。 – fzzfzzfzz

+1

ArrayList和userinput之间的连接是什么?您似乎有一个SmallItem对象的列表,但您的用户输入是一个字符串 – AbtPst

回答

0

你不想检查Backpack.contains(t),除非你实际上在Backpack寻找tt是你的Scanner对象本身,而不是输入。

如果你希望用户输入对象的索引中删除,那么你会希望userInputint并做到这一点:

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

如果你希望用户输入姓名或其他一些涉及对象而不是其索引的输入,则应编写一个方法,该方法将userInput作为参数,并确定将哪些SmallItemBackpack中删除并将其删除。

这里有一个如何可以做,如果每个SmallItemString类型的变量name一个例子:

for (int i=0; i<Backpack.size(); i++) { 
    if (Backpack.get(i).name.equals(userInput) { 
     Backpack.remove(i); 
     break; 
    } 
} 

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

0

如果我把它写我想你想从列表中删除的项(T)

所以,你必须通过变量(T或用户输入),如下图所示改变变量(项):

String userInput = t.nextline();

公共无效dropItemByName(){

if(Backpack.contains(userInput)) { 
     Backpack.remove(userInput); 
    } 

}