[英]Efficient string searching in Java
我正在處理兩個大數據列表,我需要有效地檢查兩者之間的匹配。 這是方案:
有什么想法可以解決效率問題嗎? 顯然,循環訪問如此多的記錄是無效率的,而且過程繁重。
謝謝你的幫助!
UPDATE值得注意的是,我並不是特別要說我需要使用ArrayList,這只是我用於測試的東西。 任何有關更有效館藏的建議都將受到歡迎。
您可以考慮通過不同的線程部分讀取文件。 這里討論類似的問題。
您可以分塊地處理文本(例如x字節或一行),每個塊可以由不同的線程執行,即每個塊一個線程。
沒有更多細節(例如鍵的性質),很難確定,但是您可能會發現使用Bloom過濾器有助於最大程度地減少check within an ArrayList of strings whether it has a match
。
顯然,如果查找列表隨時間變化,這將無濟於事。
您可以在搜索列表之前使用Bloom篩選器進行預檢查,因為如果列表中不存在該鍵,它可以很快為您提供直接的no
答案。 如果Bloom filter maybe
說,您仍然需要搜索列表。
您應該使用HashMap,它大約為O(1),或者如果您的字符串有很多沖突,而不是需要使用TreeSet O(logN)或Bloom過濾器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.