我目前正在編寫一個程序,需要比較每個文件在一個可變大小的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)));
}
}
我讀過關於嵌套循環的必要性幾個不同的意見,我想知道如果任何人有一個更有效的替代方案。
每個比較都需要完成,無論哪種方式,所以性能應該相當穩定,但我確信有一個更簡潔的方法可以做到這一點。任何指針?
編輯::這只是功能的一部分,爲清晰起見。這些文件已經過比較並根據長度放入桶中 - 在穿過該組的地圖並找到一個長度大於1的桶之後,它運行這個。所以 - 這些都是相同大小的文件。我會在進入字節之前進行校驗和比較,但現在我只是想清理循環。
另外,聖牛這個網站反應速度很快。多謝你們。我想 - 首先,我比較和排序的長度,然後通過校驗和,然後按字節 - 我有問題的進一步澄清:文件處理部分我有一個體面的把握,我認爲 - 是如何正確處理需要比較ArrayList中的所有文件,假設它們都需要進行比較。如果嵌套循環對此足夠了,那很酷,我只是想檢查這是一個合適的方法,按照慣例。
我會保留就這樣。我沒有看到做n(n-1)/ 2比較的更清晰的方法。 – 2010-04-23 22:14:19
看起來你可能會做每個比較兩次,因爲checkBytes(a,b)與checkBytes(b,a)相同。 – jvilalta 2010-04-23 22:15:36
如果你真的需要它們,使用嵌套循環確實沒有什麼問題。比較不同的陣列列表對應當是其中的一種情況。沒有對checkBytes函數的進一步瞭解,你的代碼就無法真正改進。 – 2010-04-23 22:16:50