java - 从 ArrayList 中删除一个元素

标签 java loops for-loop arraylist

我正在尝试使用 ArrayList 和 for 循环删除字符串匹配“Meg”。到目前为止,我已经编写了下面的代码,但不确定为什么它不起作用。我认为问题出在下面的 while 循环

while((customerName.get(i)).equals("Meg"))
{
  customerName.remove(i);
}

提前致谢。

完整代码如下:

import java.util.ArrayList;
public class CustomerLister2
{
  public static void main(String[] args)
  {
    ArrayList<String> customerName = new ArrayList<String>(); 
    customerName.add("Chris");
    customerName.add("Lois");
    customerName.add("Meg");
    customerName.add("Peter");
    customerName.add("Stewie");
    customerName.add(3, "Meg");
    customerName.add(4, "Brian");

    int currentSize = customerName.size();

    for(int i = 0; i < currentSize - 1; i++)
    {

      while((customerName.get(i)).equals("Meg"))
      {
        customerName.remove(i);
      }
    }
    for(String newStr: customerName)
    {
      System.out.println(newStr);
    }
  }
}

最佳答案

改成下面的

for(int i = 0; i < currentSize; i++)
{
  if((customerName.get(i)).equals("Meg"))
  {
    customerName.remove(i);
    i--;  //because a new element may be at i now
    currentSize = customerName.size(); //size has changed
  }
}

关于java - 从 ArrayList 中删除一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15309144/

相关文章:

java - 在 spring mvc 中处理包装的异常

java - 如何在java中为多个组件添加多个监听器

java - 悲观锁与可序列化事务隔离级别

Bash 删除路径中的前导/

javascript - NodeJs 使用 async 和 for 循环下载

javascript - Promise 中的代码是否引用循环迭代中的变量

java - JMS onMessage() 和并发

excel - 对文件夹中的所有文件执行 VBA 宏

batch-file - 提示用户在批处理文件中选择目录

java - for循环中的条件表达式未按预期运行