我试图减少这些循环以优化一些代码。有人建议我使用滑动窗口技术,但似乎无法使其适合我的示例。
我添加括号中的所有内容只是为了表明它们是什么类型。file.get(..)方法从文件中的给定索引返回一个字节。由于这些文件很大,因此外循环可以(通常)在很大的范围内进行迭代。asciiCombo的范围是2-8个元素。
这是一个嵌套循环,我不确定如何减少它:
for (long i = offsetInBytes; i < (long) file.length; ++i) {
int match = 0;
for (int j = 0; j < (int[]) asciiCombo.length; ++j) {
if (file.get(i + j) == asciiCombo[j]) {
match++;
} else {
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
用if语句或某个要查找的集合替换内部循环与嵌套循环本质上是相同的,因此不会执行。我一直无法实现滑动窗口(不确定是否可以实现)。
我一直在这里陷入困境,不胜感激。谢谢!