簡體   English   中英

Java中高效的字符串搜索

[英]Efficient string searching in Java

我正在處理兩個大數據列表,我需要有效地檢查兩者之間的匹配。 這是方案:

  • 逐行讀取文件(此文件有100萬行)
  • 對於每一行,請在字符串的ArrayList中檢查是否有匹配項(此ArrayList也有大量的元素)
  • 如果找到匹配項,則用新值替換文件中的行

有什么想法可以解決效率問題嗎? 顯然,循環訪問如此多的記錄是無效率的,而且過程繁重。

謝謝你的幫助!

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM