0

オブジェクトのサイズが大きくなるにつれて、そのオブジェクト内の各データブロックのサイズが大きくなるオブジェクトを使用しています。したがって、サイズが 1MB のブロックが 16 個、次にサイズが 2MB のブロックが 8 個、4MB のブロックが 4 個になります。)

(私たちの設計のデータ ブロックへの) インデックスを指定すると、このブロックのサイズ (1MB/2MB/4MB) をすばやく返すことができるはずです。

これは私が今持っているものです:

private blockType getBlockType(final int blockIndex) {
    if (blockIndex < 0) {
        throw new IllegalArgumentException("Received illegal blockIndex for the file");

    } else if (blockIndex < NUM_SMALLBLOCKS) {
        return blockType.SMALL;

    } else if (blockIndex >= NUM_SMALLBLOCKS && blockIndex < (NUM_SMALLBLOCKS + NUM_STDBLOCKS)) {
        return blockType.STANDARD;

    } else if (blockIndex >= (NUM_SMALLBLOCKS + NUM_STDBLOCKS) && blockIndex < MAX_NUM_BLOCKS) {
        return blockType.LARGE;

    } else {
        throw new IllegalArgumentException("Received illegal blockIndex");
    }
}

計算は長く、読みにくく、理解しにくいように見えます。これを達成するためのより良い方法を提案してください。

追伸: 先ほどの複雑な質問文で申し訳ありません。夜遅くまで働いています。

4

2 に答える 2

0

では、約 8 つ以上の要素をサポートする必要はありませんか? それらをすべて通常の配列に次々に格納し、すべてのクエリでそれを数えることができます。

于 2013-08-23T08:09:02.150 に答える
0

aすべてのサイズの合計のサイズの配列を作成します。必要なオブジェクトを指すように、配列内のすべてのインデックスを設定します。そうすることで、a[index]単に適切なオブジェクトが返されます。

簡単で効率的です。

于 2013-08-23T06:54:04.400 に答える