gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 11:04:52 25 4
gpt4 key购买 nike

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/

25 4 0