我目前正在编写一个程序,需要比较可变大小的ArrayList中的每个文件.现在,我这样做的方式是通过嵌套的代码循环:
if(tempList.size()>1){
for(int i=0;i<=tempList.size()-1;i++)
//Nested loops. I should feel dirty?
for(int j=i+1;j<=tempList.size()-1;j++){
//*Gets sorted.
System.out.println(checkBytes(tempList.get(i), tempList.get(j)));
}
}
Run Code Online (Sandbox Code Playgroud)
我已经阅读了一些关于嵌套循环必要性的不同意见,我想知道是否有人有更高效的替代方案.
乍看之下,无论哪种方式都需要进行每次比较,因此性能应该相当稳定,但我还是有点确信有一种更清洁的方法可以做到这一点.有什么指针吗?
编辑::为清晰起见,这只是功能的一部分.这些文件已根据长度进行比较并放入存储桶中 - 在浏览完集合的映射后,找到一个长度大于1的存储桶,它会运行它.所以 - 这些都是相同大小的文件.在我得到字节之前,我将进行校验和比较,但是现在我只是想清理循环.
此外,圣母这个网站反应迅速.多谢你们.
EDIT2 ::对不起,为了进一步说明:文件处理部分我有一个很好的把握,我认为 - 首先,我按长度进行比较和排序,然后通过校验和,然后按字节 - 我的问题是如何正确处理需要有效地比较ArrayList中的所有文件,假设它们都需要进行比较.如果一个嵌套循环就足够了,那很酷,我只想检查这是一个合适的方法,按惯例.