【问题标题】:Comparing ArrayLists containing objects比较包含对象的 ArrayList
【发布时间】:2014-04-11 16:30:19
【问题描述】:

我有两个 ArrayList:A 和 B 两个 ArrayList 都有一堆对象 存放在里面。 A 比 B 多。我正在尝试存储对象 在名为 C 的新 ArrayList 中位于 A 但不在 B 中。每个对象 有一些数据成员,但我只比较其中两个 - “名称”和 “其他名称”。

找到布尔值;

    for(int i = 0; i < a.size(); i++)
    {
        found = false;
        for(int j = 0; j < b.size(); j++)
        {   if (A.get(i).getName().equals(B.get(j).getName()) 
                  &&
            A.get(i).getOtherName().equals(B.get(j).getOtherName()))        
                    {
                   found = true;        
                    }
        }
        if (found = true)
            {
                C.add(A.get(i));           
            }
    }

问题是 ArrayList 'c' 与所有对象一起存储 来自 a,而不仅仅是那些在“a”中但不在“b”中的那些。 我做错了什么?

【问题讨论】:

    标签: object arraylist


    【解决方案1】:

    我可以看到一个简单的错误:

    这一行:

    if (found = true)
            {
                C.add(A.get(i));           
            }
    

    需要:

    if (found != true)
            {
                C.add(A.get(i));           
            }
    

    您需要使用不等号 ("!=") 将 found 的值与 true 的值进行比较。通过使用 found = true。每次执行 if 语句时,您都将 found 设置为 true,而不是比较值。

    该行也可以写成(它们的意思相同):

    if (!found)
            {
                C.add(A.get(i));           
            }
    

    【讨论】:

    • 哦,这是真的。愚蠢的错误。改变了它,但现在由于某种原因,它只存储 'c' 和来自 'b' 的对象
    • 啊,我相信你的逻辑是不正确的。你想要:找到!=真。如果找不到值,您希望将值插入到 C 中。我对么?如果你改变它,它应该可以解决你的问题。
    • img.pandawhale.com/… 太棒了。谢谢!为什么我不能投票给你?
    • 没问题!很高兴我能帮上忙。请投票并接受答案,以便观众看到问题已解决,以防人们遇到同样的问题。
    • 单击问题左侧 0 上方的向上箭头。然后按复选标记接受答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多