オブジェクトのサイズが大きくなるにつれて、そのオブジェクト内の各データブロックのサイズが大きくなるオブジェクトを使用しています。したがって、サイズが 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");
}
}
計算は長く、読みにくく、理解しにくいように見えます。これを達成するためのより良い方法を提案してください。
追伸: 先ほどの複雑な質問文で申し訳ありません。夜遅くまで働いています。