Java 循环以检查项的字符串数组

Java 循环以检查项的字符串数组,java,arrays,string,Java,Arrays,String,我有这个数组 public static ArrayList<String> inventory = new ArrayList<String>(); 或 我是否可以编辑removeAllInventory,忽略鹤嘴锄,创建一个新的空白区域,名为removeAllShop或其他什么?如果是这样的话,在这片空白中会有什么 这就是我需要把它放进去的地方: else if (input.input.equalsIgnoreCase("all")) { } 您不应该编辑

我有这个数组

public static ArrayList<String> inventory = new ArrayList<String>();

我是否可以编辑removeAllInventory,忽略鹤嘴锄,创建一个新的空白区域,名为removeAllShop或其他什么?如果是这样的话,在这片空白中会有什么

这就是我需要把它放进去的地方:

else if  (input.input.equalsIgnoreCase("all")) {


}

您不应该编辑
removeAllInventory()
来删除除鹤嘴锄之外的所有内容。它的名字将不再有意义,它似乎是一个合理的日常保持

但是您可以添加一个新方法,
removeAllInventoryExcept(stringitem)
,该方法除去给定项之外的所有内容

希望这有帮助

编辑:为了强化这个答案,我还想建议“开箱即用”的解决方案:

public void removeAllInventoryExcept(String item) {
    ArrayList<String> newInv = new ArrayList<String>();
    newInv.add(item);
    inventory = newInv;
}
public void removeAllInventoryExcept(字符串项){
ArrayList newInv=新的ArrayList();
新增存货增加(项目);
存货=新投资;
}

这避免了昂贵的迭代和字符串比较。

您不应该编辑
removeAllInventory()
来删除除鹤嘴锄之外的所有内容。它的名字将不再有意义,它似乎是一个合理的日常保持

但是您可以添加一个新方法,
removeAllInventoryExcept(stringitem)
,该方法除去给定项之外的所有内容

希望这有帮助

编辑:为了强化这个答案,我还想建议“开箱即用”的解决方案:

public void removeAllInventoryExcept(String item) {
    ArrayList<String> newInv = new ArrayList<String>();
    newInv.add(item);
    inventory = newInv;
}
public void removeAllInventoryExcept(字符串项){
ArrayList newInv=新的ArrayList();
新增存货增加(项目);
存货=新投资;
}

这避免了昂贵的迭代和字符串比较。

在列表上循环,检查每个元素是否等于pickaxe,如果不等于,则将其删除

Iterator<String> i = inventory.iterator();
while (i.hasNext()) {
  if (i.next().equalsIgnoreCase("pickaxe"))
    i.remove()
}
Iterator i=inventory.Iterator();
while(i.hasNext()){
if(i.next().equalsIgnoreCase(“鹤嘴锄”))
i、 删除()
}

在列表上循环,检查每个元素是否等于鹤嘴锄,如果不等于,则将其移除

Iterator<String> i = inventory.iterator();
while (i.hasNext()) {
  if (i.next().equalsIgnoreCase("pickaxe"))
    i.remove()
}
Iterator i=inventory.Iterator();
while(i.hasNext()){
if(i.next().equalsIgnoreCase(“鹤嘴锄”))
i、 删除()
}

我假设库存中的所有项目都是一个项目类的祖先,而不仅仅是一个字符串

您可以在ArrayList中循环,获取每个元素的名称,并将其与鹤嘴锄名称进行比较

您可以在ArrayList中循环并检查每个项目是否为 鹤嘴锄,如果不是,请将其从ArrayList中删除


edit*您似乎指定ArrayList为String类型,因此忽略第二个选项

我假设库存中的所有项目都是项目类的祖先,而不仅仅是字符串

for (String item : inventory) {
   if (!"pixckaxe".equalsIgnoreCase(item)) {
       inventory.remove(item);
   }
}
您可以在ArrayList中循环,获取每个元素的名称,并将其与鹤嘴锄名称进行比较

您可以在ArrayList中循环并检查每个项目是否为 鹤嘴锄,如果不是,请将其从ArrayList中删除


edit*您似乎指定ArrayList为String类型,因此忽略第二个选项

这真的值得不做注释吗?这并不能解决问题。我同意让代码尽可能地自我记录是保持理智的好方法。更改removeAllInventory的功能首先会使您的代码变得不易被第三方理解。如果在调用removeAllInventoryExcept(“pickaxe”)后,原始库存包含多个“pickaxe”元素,则作为旁白-现在只有一个鹤嘴锄,这就是为什么可能需要迭代和字符串比较。这真的值得不做评论吗?这并不能解决问题。我同意让代码尽可能地自我记录是保持理智的好方法。更改removeAllInventory的功能首先会使您的代码变得不易被第三方理解。如果在调用removeAllInventoryExcept(“pickaxe”)后,原始库存包含多个“pickaxe”元素,则作为旁白-现在只有一个鹤嘴锄,这就是为什么可能需要迭代和字符串比较。此代码将导致java.util.ConcurrentModificationException。不要使用!此代码将导致java.util.ConcurrentModificationException。不要使用!请注意,使用不带迭代器的for循环将导致java.util.ConcurrentModificationException。请注意,使用不带迭代器的for循环将导致java.util.ConcurrentModificationException。
for (String item : inventory) {
   if (!"pixckaxe".equalsIgnoreCase(item)) {
       inventory.remove(item);
   }
}