数组 int arrys={1,2,3,4,5,}
如何删除“3”这个元素
代码:
public class $ {
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 }
System.out.print("删除前:")
show(arr)
int[] brr = new int[arr.length - 1]
int idx = 0
for (int i : arr) {
if (i != 3) {
brr[idx++] = i
}
}
System.out.print("删除后:")
show(brr)
}
private static void show(int[] arr) {
for (int i : arr) {
System.out.print(i + ",")
}
System.out.println()
}
}
先找到这个元素在数组中的位置n,然后:void remove_from_array(int *a, int n, int &l)//从数组a中删除第n个元素。l为数组原始长度,引用传参,所以可以将新的长度带回主调函数。如果成功,函数返回0,否则函数返回-1。 {
if(a == NULL || n<0 || l < 0 || n>=l)return
int i
for(i = n i < l-1 i ++)
{
a[i] = a[i+1]//依次用后续一个元素覆盖前一个元素,直到数组尾。
}
l--
}
假设我们有一系列对象,例如:
我们想要从数组中删除这些重复的对象,我们该如何解决?
为了理解原因,让我们先来看看如何从平面项数组(如字符串)中删除重复项。
假设我们有一个字符串数组,如下所示:
如果我们想从这个数组中删除任何重复项,我们可以使用 Array.prototype.filter() 和 String.prototype.indexOf() 方法来检查任何给定项是否是重复项。
这种方法不适用于对象的原因是,任何两个具有相同属性和值的对象实际上并不被认为是相同的。
具有 name 和 age 相同,但进行比较时确为 false , 这是因为对象是基于引用而不是结构进行比较的。在比较这两个对象时,不考虑这两个对象具有相同的属性和值。因此,在一个对象数组中,即使存在另一个具有完全相同的属性和值的对象,也总是返回所传递对象的索引。
检查两个对象是否具有相同的属性和值的唯一方法是实际检查每个对象的属性和值。
以下该解决方案涉及到执行这个手动检查,但是有一些增强来提高性能和减少不必要的嵌套循环。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)