2014-01-20 41 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