java—在创建自己的可扩展哈希项目时,如何使目录“指向”正确的bucket?

dzjeubhm  于 2021-06-30  发布在  Java
关注(0)|答案(0)|浏览(142)

我已经阅读了wiki页面上关于创建可扩展哈希表可扩展哈希的内容。现在我正试图将其实现到一个程序中,以便更好地理解它,但我不知道如何将目录指向bucket。
目录类:

int GlobalDepth = 1;
int directories[];

public Directory() {
    int temp = (int)Math.pow(2, GlobalDepth);

    loadDirectories(temp);

}

public void loadDirectories(int n) {
    for (int i = 0; i < n; i ++) {
        String BinaryKey = Integer.toBinaryString(i);
        String tempKey = BinaryKey.substring(0, this.GlobalDepth); // LSB
        int depthKey = Integer.parseUnsignedInt(tempKey);

        this.directories[i] = depthKey;

    }

}

public void increaseGlobalDepth() {
    this.GlobalDepth ++;

    loadDirectories((int)(Math.pow(2, this.GlobalDepth))); // This method might throw an error because i think im changing the array size illegally and should instead create a temp array and copy/equal that array to this.directories

}

铲斗等级:

private SomeObject[] item; // Class I'm using to hold all the information of something
private int Key, MaxBucketsize, LocalDepth = 1;
//Bucket next;

public Bucket() {

}

public Bucket(int BucketSize) {
    this.item = new SomeObject[BucketSize]; // Initalises the number of items held in the bucket
    this.MaxBucketsize = BucketSize; // Stores the max number of items that can be held in the bucket

}

public SomeObject[] getObjects() {
    return this.item;

}

public boolean addObjects(int key, SomeObject item) {
    boolean inserted = false;

    for (int i = 0; i < this.MaxBucketsize; i ++) {
        if (this.item[i] == null) { // only inserts if there is an empty spot in the bucket
            this.item[i] = item;
            this.item[i].setKey(key);

            inserted = true;

            break;

        }

    }

    return inserted;

}

做了这些之后,我不知道现在如何像wiki页面那样将这两个链接在一起。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题