- ビジネスロジックを実行したい可変サイズのブロックの配列があります。
- 解析および処理するバイト数 (合計 - すべてのブロック内) を識別する「サイズ」パラメーターを使用する必要があり、処理後の結果はブロックとそのサイズのリストになります。
- データを非常にきれいに解析する再帰ロジックを作成しましたが、それをきれいにするには、ブロック境界に沿って機能するように制限する必要がありました (整列)。
- 私が持っている唯一の非整列ブロックは最初と最後になるので、それも問題ないように見えました. 私の以前の関数は、最後のブロックをうまく処理できますが、最初のブロックは処理できません。
そのため、ブロック内の位置合わせされていないオフセットを処理する別の関数を作成します。
私の DS:
class BlockInfo { private long blockID; private long blockSize; } public class BlockIDSet { private long offset; private int firstBlockIndex; private List<BlockInfo> resultSet; }
最初の関数のジョブ: 開始オフセットがアラインされていない場合、オフセットからブロックの最後までの残りのバイトを解析して を返し
firstBlockIndex
、.single BlockInfo object
remaining size (numBytes)
2 番目の関数は を消費し
remaining size
、開始してfirstBlockIndex +1
を返しますlist of BlockInfo objects
。
C++ では、参照として引数を渡し、関数呼び出しでそれらの値を更新して、更新された値を後で使用できるようにすることは非常に一般的です。私が読んだ限りでは、Java はそうしないことを推奨しています。関連する質問。どうすればこれを達成できますか? それとも、私のデザインに欠陥があるので、やり直すべきでしょうか?