java - 可以通过将元素放在数组末尾并减小数组大小来从数组中删除元素吗?

标签 java arrays

for(int i = 0; i < bag.length; i++)
      {
        if(bag[i].equals(a))
        {
            tmp = bag[i];
            bag[i] = bag[bag.length-1];
            bag[bag.length-1] = tmp;
            numElements--;
            break;
        }
}

这样做的目的是在数组中找到一个对象然后将其删除?这可能吗?

最佳答案

无法更改数组的长度。回想一下,数组是一个静态数据结构,其大小是预先确定的。此数据结构不支持增加或减少。必须根据用例增加或减少大小这一事实意味着他们选择了错误的数据结构。他们也许应该使用 ArrayList。

无论如何,回到你的问题,你可以通过维护一个变量来模拟“大小减小”,让你跟踪数组索引并减小该变量的大小。这会让您产生缩小阵列的印象。 您提供的代码具有相同的作用。但请注意,您应该使用此修改后的索引来跟踪数组的内容。

for(int i = 0; i < bag.length; i++)
      {
        if(bag[i].equals(a))
        {
            tmp = bag[i];
            bag[i] = bag[bag.length-1];
            bag[bag.length-1] = tmp;
            numElements--;
            break;
        }
}

每当给定索引处的特定包等于所讨论的项目(即“a”)时,我们就会交换元素,以便当前要删除的包元素移动到最后一个,并且我们会减小新索引的大小 - numElements 加 1 来模拟这一点。

如果您有完整的代码,请考虑在该程序末尾添加以下代码段以进一步了解这一点:

// Simulation of the array shrinking.
for(int i = 0; i < numElements; i++)
{    
    System.out.println( bag[i] );
}

// Movement of uninteresting elements to the end of the array.
for(int i = 0; i < bag.length; i++)
{
    System.out.println( bag[i] );
}

关于java - 可以通过将元素放在数组末尾并减小数组大小来从数组中删除元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33056341/

相关文章:

由于 kotlin 错误,Java Spring Boot 应用程序无法从 IDEA 运行

java - kieservices.factory.get() 在 kie-api7.6.0 中返回 null

python - 如何在numpy python数组的行尾添加数字

javascript - 使用 ramda 过滤具有相同日期的日期列表

javascript - 从表单输入创建多维关联数组

java - 从 Hashmap 中同时添加或删除元素并实现同步

java - 读取 oleObject 文件的代码

javascript - 将 .change() 添加到 js Array() 中的每个变量;

C - 动态结构数组

java - 如何控制老年代的java堆大小?