簡體   English   中英

檢查字符串數組並將其寫入文件的最有效方法

[英]Most efficient way to check string array and then write it into file

我需要檢查Strings List以包含某些預定義的字符串,並且-如果所有這些預定義的字符串都包含在列表中-我需要將該列表寫入文件。

作為第一種方法,我想做類似的事情

if(doesTheListContainPredefinedStrings(list))
    writeListIntoFile(list);

doesTheListContainPredefinedStringswriteListIntoFile執行循環以檢查prefefinedStrings並將列表中的每個元素分別寫入文件。

但是-由於在這種情況下,我不得不擔心性能-我想利用一個事實,即在doesTheListContainPredefinedStrings方法中,我仍在評估列表的元素一次。

我也想過

String[] predefinedStrings = {...};

...

PrintWriter pw = new FileWriter("fileName");

int predefinedStringsFound = 0;

for (String string : list)
{
    if (predefinedStrings.contains(string))
        predefinedStringsFound++;

    pw.println(string);
}

if (predefinedStringsFound == predefinedStrings.length)
    pw.close();

自從我觀察到-至少在我正在開發的系統上(Ubuntu 19.04)-如果我不關閉流,則不會將字符串寫入文件。 但是,此解決方案似乎真的很糟糕,並且仍會創建文件,因此-如果列表未通過檢查-無論如何我都會有刪除它的問題(這需要對存儲進行另一次訪問)。

有人可以建議我采取更好/最好的方法,並解釋為什么對我而言更好/最好?

檢查相反的情況- 缺少要檢查的字符串列表中的predef字符串嗎?

Collection<String> predefs;  // Your certain predefined strings
List<String> list;           // Your list of strings to check

if( ! predefs.parallelStream().anyMatch( s -> ! list.contains( s ) ) )
  writeListIntoFile(list);

上述lambda表達式就停止從predefs第一串不能在字符串到檢查列表中找到並返回true -你不能寫在這種情況下,該文件。
它不檢查預檢查字符串中是否包含未包含在預定義字符串中的任何其他字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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