gpt4 book ai didi

java - 这会像析构函数一样工作吗?

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

我正在开发布朗运动跟踪的处理程序。

我有一个 ArrayList blob 和 ArrayList 合并。第一个是我跟踪的粒子列表,第二个是我要合并的粒子列表。

每个粒子都是一个 Blob 类对象。 Blob 对象在其数据中包含名为 lespoints 和 int id 的 vector ArrayList。

由于我需要将几个粒子合并为一个,所以我需要销毁一些 Blob 对象,但 Java 没有任何析构函数,我不想使用 Finalise()。这会像合并+销毁一样工作吗?

 public void delete(Blob a)
{
a = null;
}

void merge(ArrayList<Blob> tomerge)
{

int i = 0;
int j = 0;

while (i <= tomerge.size())
{
Blob k = new Blob();
k = tomerge.get(i);
while (j <= tomerge.get(i).siz()) {
Vector g = k.lespoints.get(j);
lespoints.add(g);
j++;
}
if (i > 0)
{
delete(tomerge.get(i));
}
i++;
}
}

最佳答案

您无需手动执行任何操作。只需确保您没有任何对要删除的变量的引用,Java 将处理其余的事情。

例如:

String x = "test";
x = null;

此时,值“test”可以被垃圾回收,因为没有任何东西指向它。

将其与此进行比较:

String x = "test";
ArrayList<String> list = new ArrayList<>();
list.add(x);
x = null;

此时,值“test”无法被垃圾收集,因为ArrayList仍然指向它。

但是如果你这样做了:

list.remove("test");

然后它可能会被垃圾收集。

所以基本上,您需要做的就是从 ArrayList 中删除元素,Java 将处理剩下的事情。请注意,您可能不想在当前循环中执行此操作,因为在迭代列表时删除元素可能会导致您跳过元素。

相反,您可能想使用迭代器或只是向后循环 ArrayList。

无耻的 self 推销:here是有关 ArrayList 的教程,包括从中删除元素。

关于java - 这会像析构函数一样工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50826975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com