如何从数组或列表中删除两个连续的元素?
我有一个数组:
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/