java - 删除元素后从头开始检查 arraylist

标签 java loops arraylist

获取元素列表:

String[] temp = new String[]{"NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"};
ArrayList<String> list = new ArrayList<>(Arrays.asList(temp));

从 ArrayList 中删除元素后,我需要返回到循环的开头

删除元素“NORTH”“SOUTH”(如果它们连续):

for (int i = 0; i < list.size() - 1 ; i++) {

    if (list.get(i).equals("NORTH") && list.get(i + 1).equals("SOUTH")) {
        list.remove(i);
        list.remove(i);
    }
    if (list.get(i).equals("SOUTH") && list.get(i + 1).equals("NORTH")) {
        list.remove(i);
        list.remove(i);
    }

上面的代码删除元素“NORTH”“SOUTH”,并继续检查元素,但条件是:

    if (list.get(i).equals("SOUTH") && list.get(i + 1).equals("NORTH")) {
        list.remove(i);
        list.remove(i);
    }

删除元素后我需要返回到第一个条件。

怎么做?

最佳答案

最简单的方法是将 i 减 1 并继续循环,因此在下一轮中,当 i 递增时,您将回到第一个循环ifi 与之前相同:

for (int i = 0; i < list.size() - 1 ; i++) {
    if (…) {
        list.remove(i);
        list.remove(i);
        i--;
        continue;
    }
    if (…) {
        list.remove(i);
        list.remove(i);
        i--;
        continue;
    }
}

或者,如果您不想使用 continue 语句,则可以使用 else-if,这样 i-1 就不会执行第二个条件:

for (int i = 0; i < list.size() - 1 ; i++) {
    if (…) {
        list.remove(i);
        list.remove(i);
        i--;
    }
    else if (…) {
        list.remove(i);
        list.remove(i);
        i--;
    }
}

关于java - 删除元素后从头开始检查 arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60742988/

相关文章:

java - java日期格式: com. fastxml.jackson.databind.exc.InvalidDefinitionException:无法构造 `java.time.LocalDate`的实例

java - 程序布局 - 通过 System.in.read 创建适当大小的数组

java - 使用 arrayList 更新文件中的记录

java - 如何在两个分数矩阵之间进行加法

java - 合并两个没有重复子类的ArrayList

java - 修复调用 Super 的 Java 类构造函数

java - 检查整数是否在 jsonb 列表中

java - 打印列表时是乱码

javascript - 从同步循环内调用异步函数并保持结果有序

java - 我可以像这样比较结果集吗?我面临以下错误