java - 如何从数组或列表中删除两个元素的序列?

标签 java arrays string list

如何从数组或列表中删除两个连续的元素?

我有一个数组:

new String[]{"FIRST", "SECOND", "SECOND", "THIRD", "FOURTH", "FIRST", "FOURTH"});

我应该从此数组中删除两个连续的元素。

要删除的元素:“FIRST”、“SECOND”

删除元素后,新的数组或列表应如下所示:

new String[]{"SECOND", "THIRD", "FOURTH", "FIRST", "FOURTH"});

现在我得到了:“第二”,“第一”

结果:new String[]{"FOURTH", "FIRST", "FOURTH"})

这是我的代码:

String[] s1 = new String[arr.length];

String n = "FIRST";
String s = "SECOND";
String w = "THIRD";
String e = "FOURTH";


//I found two successive elements, and element next to them 
//My question is, how can I remove these element from list, 
//or copy array without these elements to a new array?

for (int i = 0; i < arr.length; i++) {
    if (arr[i].equals(n) && arr[i + 1].equals(s)) {
        System.out.println(arr[i + 2]);
    }
}

如何从数组或列表中删除两个连续的元素?

最佳答案

public static void main(String[] args) {
    String[] arr = new String[]{"FIRST", "SECOND",
            "SECOND", "THIRD", "FOURTH", "FIRST", "FOURTH"};
    String[] toRemove = new String[]{"FIRST", "SECOND"};
    arr = removeSuccessive(arr, toRemove);
    System.out.println(Arrays.toString(arr));
}

private static String[] removeSuccessive(String[] arr, String[] toRemove) {
    ArrayList<String> res = new ArrayList<>();
    for (int i = 0; i < arr.length; i++) {
        if (!arr[i].equals(toRemove[0]))
            res.add(arr[i]);
        else if (i + 1 < arr.length && !arr[i + 1].equals(toRemove[1]))
            res.add(arr[i]);
        else
            i++;
    }
    return res.toArray(new String[res.size()]);
}

您可以在此处检查并运行此代码: https://ideone.com/v6nPRf

关于java - 如何从数组或列表中删除两个元素的序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50114050/

相关文章:

javascript - 如何使用 react Hook 将新值推送到当前数组?

arrays - 两个已排序数组并集中的第 k 个最小元素

c++ - 如何分离用户输入的字符串并将其存储到数组中

Java gson在序列化时替换成员对象

java - 如何使用循环之外的变量

java - 自然语言处理——将文本特征转化为特征向量

php - 在PHP中,二维数组中的行数和列数?

c - 如果我将字符串作为变量传入,为什么我的函数无法将字母转换为大写?

regex - sed 替换文件名以引号开头

java - Netbeans 中有关 join 方法的错误