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);
}
}