Java将未知项添加到arraylist

时间:2014-01-20 10:36:31

标签: 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);
        }

如果有人能帮助我,我会很感激。

由于

2 个答案:

答案 0 :(得分: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中的所有项目,然后才能说它是未知的。

答案 1 :(得分:0)

不知道什么是p&我在你的第二个片段,但它在每次继续时开始循环...也许没有标签尝试(跳过添加)?

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

        listUnknow.add(p);
    }