我的课程定义为:
public class Percolation{
private boolean[] openCells;
private WeightedQuickUnionUF uob;
public Percolation(int n){
this.openCells = new boolean[n*n+1];
this.uob = new WeightedQuickUnionUF(n*n+1);
}
在调用Percolation(n)时,WeightedQuickUnionUF对象和openCells []占用O(n ^ 2)空间。
现在有趣的是,如果我必须调用Percolation(n),某些时候没有(比如t),我不需要调用构造函数Percolation(n),' t'一次,我可以覆盖一次为n分配内存。 但为此我可以找到两个解决方案:
1.在我完成所需的操作然后再次调用Percolation之后释放构造函数使用的内存,但是通过一些odr StackOverflow线程让我意识到它不会确保内存释放,并且依赖于垃圾收集器。< / p>
2.i可以在类渗透中添加一个方法(如下所示)来覆盖WeightedQuickUnionUF类的成员,但问题是WQF的所有成员都是私有的。
3.i可以在WeightedQuickUnionUF类中添加一个方法来覆盖类的成员,但是WeightedQuickUnionUF是只读的。
private void set_containers(n){
for(int i=0; i<n*n+1 ; i++){
this.openCells[i] = false;
this.uob.id[i] = i;
this.uob.sz[i] = 1;
}
我在java方面没有太多经验,需要知道如何在这种情况下优化内存利用率。
完整代码:
谢谢你:)