2014-01-20 78 views
1

您好,我有一個快速的問題。Java將未知項添加到arraylist

我在將一個項目從input.txt文件添加到新列表時出現問題。

我有一個包含28個項目的文件,包含名稱和數字,其中27個是我創建的類別和列表的一部分。但是,還有一個應該被對待並且被包含在一個名爲「未知項目」的新類別中,這個類別應該包括那些或者可能被添加的不屬於這些列表的任何項目,包括拼寫錯誤。

無論如何,我爲我的類別和我的列表創建了ArrayLists。這是我對那些代碼,它工作正常:

for(Items i : list) { 
     for(String name: cat1) { 
      if(i.name.equalsIgnoreCase(name)) 
       lista1.add(i); 
     } 

但後來當我試圖使未知項目列表相同,這是行不通的,現在我所得到的是完全相反的是什麼我需要,這是我從分類中得出的最接近的,它包括27個項目,不包括我需要的項目,當我嘗試反轉它時,它只是被搞砸了,我無法弄清楚我是什麼做錯了,這是我有:

next: 
     for(String name: catAll){ 
      if(!i.name.equalsIgnoreCase(name)) continue next; 

       listUnknow.add(i); 
     } 

如果任何人都可以幫助我,我會很感激。

感謝

回答

1

您正在尋找這樣的事情:

for(Items i : list) { 
    boolean unknown = true; 
    for(String name: cat1) { 
     if(i.name.equalsIgnoreCase(name)) { 
      lista1.add(i); 
      unknown = false; 
      break; 
     } 
    } 
    if(unknown) { 
     listUnknown.add(i); 
    } 
} 

與您的代碼的問題是像你想象的那樣是反相不起作用。如果您的cat1包含「a」,「b」並且您當前的項目是「b」,那麼第一個檢查將返回true。畢竟,!"b".equalsIgnoreCase("a")是真的。您需要檢查全部項目在cat1之前,你可以說它是未知的。

+0

就是這樣,非常感謝。 – Fil

0

不知道我是什麼p &在你的第二個片段,但它開始在每個循環繼續...也許嘗試在沒有標籤(跳過加入)?

for(String name: catAll){ 
     if(!i.name.equalsIgnoreCase(name)){ 
      continue; 
     } 

     listUnknow.add(p); 
    } 
+0

我的不好,最後(p)應該是(i),沒有標籤不工作,我試了一切。它的工作現在,感謝您的答覆 – Fil