簡體   English   中英

靜態數組列表會丟失包含的內容嗎?

[英]Do static arraylists lose what the contain?

我有一個程序,它處理大量數據。 它正在將一個靜態字符串數組列表與另一個靜態字符串數組列表進行比較,以檢查其中是否包含字符串。

但是發生的是在處理了40k +個字符串之后,它開始無法通過檢查。 失敗,我是說它開始不認識另一個字符串已經存在?

這是有原因的,還是arraylist太大?

謝謝

編輯

   for (int i = 0; i <  arraylist1.size(); i++) {
        boolean enter = true;
        for (int x = 0; x < arraylist2.size() && enter; x++) {
            if (arraylist1.get(i).getString().matches(arraylist2.get(x))) {
                enter = false;
            }
        }
        if (enter) {
       //do something
     }
  }

編輯****

問題的主題外,但使用.equals()而不是.matches()可以極大地提高性能。

簡單回答是不。

ArrayLists不會丟失其中的內容。

您的症狀可能是由多種原因引起的,包括線程/同步問題,字符串中的細微差別等。

無論如何,您都應該考慮使用HashSet 這將使“包含”檢查更快得多。

使用HashSet您上面的所有代碼將變為:

List<String> list;
Set<String> set;

for (String str: list) {
   if (!set.contains(str)) {
      //do something
   }
}

更簡單,更快。

如果確實需要使用列表,則可以執行相同的操作,但是將兩個集合都作為List ,API不會改變,但是性能會改變。

暫無
暫無

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

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