可以使用集合(set)来解决这个问题。首先将数组B中的所有元素添加到set中,然后遍历数组A中的所有元素,如果该元素也在set中存在,那么将其从数组A中删除。这样可以避免使用双重循环来查找是否存在。
下面是示例代码:
import java.util.HashSet;
import java.util.Set;
public class ArrayDeletion {
public static void main(String[] args) {
int[] a = {1, 2, 3, 4, 5};
int[] b = {2, 4};
deleteElements(a, b);
for (int i : a) {
System.out.print(i + " ");
}
}
public static void deleteElements(int[] a, int[] b) {
Set set = new HashSet<>();
for (int i : b) {
set.add(i);
}
int index = 0;
for (int i : a) {
if (!set.contains(i)) {
a[index++] = i;
}
}
while (index < a.length) {
a[index++] = 0; // 填充0表示删除位置后的元素
}
}
}
这段代码中,首先将数组B中的所有元素添加到set中,然后遍历数组A中的所有元素,如果该元素也在set中存在,那么将其从数组A中删除。最后使用0来填充删除位置后的元素。
上一篇:不使用双重循环遍历列表