- 我有一组可变大小的块,我想在这些块上执行一些业务逻辑。
- 我必须使用一个“大小”参数,该参数标识要解析和处理的字节数(总计 - 在所有块中),处理后的结果应该是块列表及其大小。
- 我编写了一个递归逻辑,它非常巧妙地解析数据,但为了让它如此整洁,我不得不将其限制为沿块边界(对齐)运行。
- 这似乎也很好,因为我将拥有的唯一未对齐的块将是第一个和最后一个。我以前的函数可以很好地处理最后一个块,但不能处理第一个块。
因此,我编写了一个不同的函数来处理块中的非对齐偏移。
我的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)
.第二个函数将使用
remaining size
、 start fromfirstBlockIndex +1
并返回 alist of BlockInfo objects
。
在 C++ 中,我们经常将参数作为引用传递并在函数调用中更新它们的值,以便以后可以使用更新的值。据我所知,Java 建议不要这样做。相关问题。我应该如何实现这一目标?还是我的设计有缺陷,我应该重新做?