比较包含对象的ArrayLists

时间:2014-04-11 16:30:20

标签: object arraylist

  

我有两个ArrayLists:A和B两个ArrayLists都有一堆对象   存储在里面。 A超过B.我试图存储对象   在A中但不在B中的新ArrayList中称为C.每个对象   有几个数据成员,但我只比较其中两个 - "名称"和   "中文别名"

     
    

boolean found;

    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&#39; c&#39;与所有对象一起存储   来自a,而不仅仅是那些在&#39; a&#39;但不是在&#39; b&#39;。   我做错了什么?

1 个答案:

答案 0 :(得分:0)

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

这一行:

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

需要:

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

您需要使用not equals(&#34;!=&#34;)符号将found的值与true值进行比较。通过使用found = true。每次执行if语句时都会将find设置为true,而不是比较值。

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

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