我正在創建應用程序來檢查我SD卡中的重複文件。
我在「文件」ArrayList
中獲得整個文件列表。
現在我需要找到重複的文件,所以我在線程中使用了這段代碼。
但它的工作,但它需要太多的時間來找到重複。線程需要很長時間。爲什麼?
for(int i=0;i<files.size();i++)
{
for(int j=i+1;j<files.size();j++)
{
if(new File(files.get(i)).getName().compareTo(new File(files.get(j)).getName())==0)
{
//My Code
}
}
}
嗯,這是O(N^2),並且您分配N^2次相同的對象,所以難怪它的速度慢。 – 2012-04-29 07:47:47
使用HashSet來檢查重複項。 – assylias 2012-04-29 07:50:01
另外,Android可能實際上訪問文件系統,這會讓一切變得更慢。 – 2012-04-29 07:51:56