我有一個文件處理程序。比較字符串與大陣列的最快方法
其中我有一個方法,檢查文件名(字符串)與ArrayList
的文件名。這個想法是,該程序不必處理已經在ArrayList
中的文件。
我的問題是,ArrayList
可以非常大(16,000元)和我周圍的相同數量的文件,通過迭代使對ArrayList
每個文件的檢查是花費過多時間。我認爲這是因爲我使用.contains
。
是否有更高效(即更快)的方式來執行這些字符串到ArrayList
與非常大的arrayLists比較,還是應該存儲在不同的數據結構?
我的代碼:
所有的public class Iterator {
static ArrayList<String> myFiles = new ArrayList<String>();
static String filename= "/Files/FilesLogged.txt";
public static void main(String[] args) throws IOException, SAXException, TikaException, SQLException, ParseException, URISyntaxException, BackingStoreException {
BufferedReader reader = new BufferedReader(new InputStreamReader(ClassLoader.class.getResourceAsStream(filename)),2048);
String line = null;
while((line = reader.readLine()) != null) {
myFiles.add(line);
}
reader.close();
}
public static void loopthrough(String folderName) throws IOException, SAXException, TikaException, SQLException, ParseException, URISyntaxException{
System.out.println("This is the loopthrough folderName"+folderName);
File dir = new File(folderName);
File[] directoryListing = dir.listFiles();
if (directoryListing != null) {
for (File child : directoryListing) {
if(!myFiles.contains(child.getName())){
System.out.println("THE FILE NAMES ARE"+child.getName().toString());
}
}
}
請正確格式化您的代碼。現在它是不可讀的。 –
爲什麼不使用HashSet呢? –
哈希集更快嗎? –